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.
TortoiseSVN vous informe ensuite des fichiers envoyés au serveur ainsi que le nouveau numéro de version.
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
.
Après cette manipulation, regardons si notre tag à bien été créé :
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
.
Je vais donc ajouter une classe à mon trunk
, une classe bean.java
et la commiter.
Maintenant mon collègue va modifier le fichier test.java
sur sa branche.
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 :
Repository du trunk :
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
:
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
.
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.
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.
Je te remercie pour ces explications ça m’éclaire sur les branches 🙂
Merci beaucoup, c’est exactement ce que je cherchais! 🙂
Merci beaucoup. Je crois que je n’aurais jamais trouvé seul.
Sympa comme tuto, dommage qu il manque des images