SVN – Branches et Tags

Nous allons voir dans ce billet l'utilisation simple de svn ainsi que la gestion des branches et des tags au sein de Subversion.
Une branche permet de faire des développements en parallèle du trunk sans perturber
la version du trunk. Une fois les modifications effectuées sur la branche, il faut les
réintégrer au sein de la branche principale le Trunk. Les tags servent quant à eux
à marquer une étape importante au sein d'un développement. Le plus souvent, ils sont utilisés pour marquer les numéros de version pour les livraisons clients.

Pour ce tutorial j'ai utilisé les outils suivants :

  • TortoiseSVN pour le client SVN : http://tortoisesvn.net/downloads
  • Un serveur SVN avec des droits en lecture/écriture.

Pour cela, nous considérons que vous avez un projet avec les trois dossiers de base :

  • trunk
  • tags
  • branches

Nous allons :
- récupérer les sources avec tortoisesvn, un Checkout.
- nous mettre sur un répertoire vide et faire bouton droit Svn Checkout.
- entrer l'url du repository du trunk

Une fois les sources récupérées, nous allons, pour les exemples, partir d'un projet vide auquel je vais ajouter une classe Java.

Je vais l'envoyer sur le serveur grâce à un Commit. Pour ce faire, je fais un clic droit sur le répertoire parent et je fais SVN Commit. On sélectionne les fichiers à envoyer au serveur et on met un message décrivant les changements effectués.

commit

TortoiseSVN vous informe ensuite des fichiers envoyés au serveur ainsi que le nouveau numéro de version.

endcommit

Maintenant, nous allons poser un "tag" avec en numéro de version 0.1, car c'est notre première livraison.
Un tag correspond à une image du repository à un instant T, il ne s'agit pas d'effectuer des commits sur un tag.
Pour cela, on passera par les branches. Pour effectuer un tag positionnez vous sur le répertoire parent, clic droit
TortoiseSVN => Branch/Tag. Entrez l'url de votre tag : enlevez trunk mettez tag à la fin ainsi qu'un nom de dossier
pour identifier votre tag, ici mon numéro de version 0.1.

tag

Après cette manipulation, regardons si notre tag à bien été créé :

repobrowser

On voit bien que notre tag est présent et que notre fichier correspond bien au commit associé 2.
Maintenant, si un collègue à moi souhaite enrichir ma classe avec de nouvelles méthodes et si je souhaite, moi, créer une nouvelle classe, je vais lui créer une branche afin qu'il ne
perturbe pas mon travail. Pour ce faire, remontez sur le répertoire parent, clic droit TortoiseSVN => Branch/Tag.

branch

Je vais donc ajouter une classe à mon trunk, une classe bean.java et la commiter.

commitbean

Maintenant mon collègue va modifier le fichier test.java sur sa branche.

maincollegue

et le commit sur sa branche.

Nous avons maintenant un petit souci.
Effectivement dans mon trunk j'ai maintenant une vieille version du main et mon collègue ne possède pas ma classe bean.
Nous allons donc réintégrer sa branche au trunk pour bénéficier du travail de chacun.

Repository de la branche :

repobrowserbranche

Repository du trunk :

repobrowsertrunk

Maintenant, procédons à la réintégration. Pour cela il faut se situer sur le trunk de votre projet.
Clic droit sur le répertoire parent TortoiseSVN => Merge et sélectionnez Reintegrate a branch.
Donnez le chemin svn de la branche à réintégrer au trunk :

merge

Sur l'écran suivant, laissez les options par défaut. Vous pouvez effectuer un merge sans impacter les fichiers localement grâce au Test Merge.

merge2

Le merge se déroule, ici pas de conflit à gérer, l'exemple étant simple. TortoiseSVN nous informe des opérations effectuées.
Ici, il indique avoir mis à jour le test.java qui correspond bel et bien à la classe modifiée par mon collègue.

finishmerge

Et, si nous allons voir la classe test.java elle a effectivement été mise à jour avec le bon code.

Voilà pour cette démonstration simple de Subversion et de la gestion des tags/branches.

4 commentaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.