Meilleur suivi de la fusion de branches

Cette version commence l'implémentation d'une nouvelle fonctionnalité permettant de faciliter les fusions de branches (merge). Un des avantages souvent cités des DVCS est leur gestion simplifiée de ces fusions. Avec ce nouveau merge tracking, Subversion essaie d'implémenter des fonctionnalités similaires. Le travail est en cours, et les prochaines versions mineures devraient apporter de nouvelles amélioration. Je n'ai pas encore eu le temps d'approfondir, vous trouverez plus d'infos dans la doc.

Possibilité de faire des check-out partiels

La commande checkout possède à présent une option --depth permettant de contrôler l'arborescence des fichiers que vous souhaitez récupérer. Très pratique pour ne récupérer que certaines sous-arborescence d'un projet. Vous pouvez par exemple récupérer tous les répertoires de premier niveau du projet, puis uniquement les sous-arborescences qui vous intéressent. Ce paramètre s'applique également à switch, update, status et info.

Résolution interactive de conflits

Le client en ligne de commande permet à présent de mieux gérer les conflits. Lorsqu'une commande détecte un conflit, elle propose à l'utilisateur différents choix: afficher les différences, lancer un éditeur, donner la préférence à la version locale ou à la version distante... Et à ces options en ligne de commande correspondent des fonctions dans l'API du client, donc les interfaces graphiques devraient également en profiter.

svn:externals handles supporte les URL relatives

Voilà une fonctionnalité qui me manquait vraiment. Les URL des références externes devaient être absolues. Pas pratique pour référencer une ressource située ailleurs dans le dépot. Plusieurs syntaxes permettent à présent de référencer des fichiers où qu'il soient dans le dépôt, relativement soit au répertoire sur lequel vous définissez la propriété svn:externals, soit à la racine du dépôt, soit à l'arborescence des dépôts sur le serveur.

Grouper les modifications

Il arrive fréquemment de travailler sur plusieurs choses à la fois, et de modifier des fichiers dans le cadre de plusieurs tâches différentes. Svn permet à présent d'affecter des étiquettes aux fichiers modifiés dans la copie locale, et d'effectuer des opération en fonction de ces étiquettes. Par exemple, si l'on implémente simultanément les fonctionnalités #1234 et #1235, on pourra marquer les fichier ainsi:

svn changelist "#1234" fichier1.js fichier2.js
svn changelist "#1235" fichier3.js fichier4.js

Ces étiquettes pourront servir de filtres pour d'autres opérations, par exemple pour voir les modifications apportées dans le cadre du ticket 1234, puis les commiter, on pourra utiliser la syntaxe:

svn diff --changelist "#1234"
svn ci -m "Fixes #1234" --changelist "#1234"

cf la description détaillée dans la documentation.

(C'était déjà possible depuis longtemps dans Eclipse via l'interface entre Mylyn et Subclipse).

Un fichier ne peut bien sûr avoir qu'une seule étiquette à la fois, lui en affecter une nouvelle supprimera l'ancienne.

Et encore:

Cette version contient également plus de 150 corrections de bugs, et de nombreuses autres fonctionnalités, dont

  • la possibilité d'utiliser le mécanisme d'authentification SASL
  • des amélorations au niveau de FSFS, le système de fichier interne utilisé par les serveurs svn
  • svnsync, qui permet de synchroniser plusieurs serveurs, autorise à présent la synchronisation bi-directionnelle entre un serveur maître et des esclaves, via un proxy WebDAV
  • et bien d'autres choses

Plus d'infos...