01/10/2008

Comment développer avec Subversion ?

1. Présentation
2. Extraction du dépôt
3. Ajout des sources dans trunk
4. Livrer ses modifications
5. Mise à jour des sources
6. Création d'un tags
7. Création d'une branche
8. Report de source
9. Gestion des conflits


1. Présentation


Votre serveur subversion et votre client sont opérationnels, nous allons décrire dans cet article l'utilisation de TortoiseSVN ainsi que les différents concepts (comme les Branches et les Tags) nécessaires au cycle de vie d'un projet géré à l'aide de Subversion.

2. Extraction du dépôt


En 1er lieu il faut récupérer les sources historisées coté serveur et les stocker en local sur son disque dur afin de pouvoir travailler dessus comme nous le ferions sans gestionnaire de version.

Extraction du dépôt
1. Clic droit dans l'explorateur Windows
2. Sélectionner "Extraire"
3. Renseigner l'URL de votre serveur Subversion (svn://localhost)

4. Renseigner le répertoire ou stocker les sources à rapatrier (C:\Subversion)




Contrôler votre copie localeVous devez voir le dépôt "Monprojet" ainsi que les répertoires
que nous avons créés lors de l'installation du serveur.
Notez que suite à l'extraction les répertoires contiennent un ".svn"
nécessaire à votre copie locale Subversion




3. Ajout des sources dans trunk


Nous avons récupéré notre dépôt mais celui-ci ne contient toujours pas de sources, il faut donc les ajouter. Pour cela supposons que notre projet contienne 3 fichiers source C# (Classe1.cs, Classe2.cs, Classe3.cs). La première opération consiste à ajouter ces fichiers au TRUNK (notre répertoire de travail courant).

Ajout d'un fichier
1. Déposer les fichiers dans le répertoire :C:\Subversion\MonProjet\TRUNK
2. Sélectionner ces fichiers
3. Clic droit dans l'explorateur Windows
4. Sélectionner : TortoiseSVN puis Ajouter

Attention à cette étape subversion n'a rien ajouté car il attend la validation de la transaction (comme une base de donnée transactionnelle attend un COMMIT)
5. Clic droit dans l'explorateur Windows
6. Sélectionner : SVNLivrer...
(ici l'ajout est effectif )



Journalisation des révisions1. Clic droit sur C:\Subversion\MonProjet\trunk
2. Sélectionner : TortoiseSVN/Voir le journal
(On voit que la dernière révision concerne l'ajout des 3 fichiers : Classe1,2,3.cs)



Tester le rapatriement des sources
1. Supprimez les fichiers Classe1,2,3.cs de votre répertoire :
C:\Subversion\MonProjet\trunk

2. Clic droit sur C:\Subversion\MonProjet\trunk
3. Sélectionner : SVN Mettre à jour
vos fichiers Classe1,2,3.cs doivent tous réapparaitre dans
C:\Subversion\MonProjet\trunk


Important : lors de l'exécution de la commande "SVNLivrer" le client envoie les sources locales vers le serveurSVN pour archivage, celui-ci est ensuite capable de restituer les sources à n'importe quel client subversion connecté au dépôt et qui exécuterait la commande "SVN Mettre à jour".

4. Livrer ses modifications


A présent vous travaillez sur les sources présentes dans "C:\Subversion\MonProjet\trunk", vos modifications terminées, vous devez les livrer au serveur subversion de façon à ce que les autres développeurs puissent en mettre à jour leurs sources avec les dernières modifications apportées.

Livraison des modifications
1. Clic droit sur "C:\Subversion\MonProjet\trunk"
2. Sélectionner : SVNLivrer ...
TortoiseSVN reconnait les fichiers ayant subit des modifications
et les proposes à la livraison, ici : Classe1.cs




5. Mise à jour des sources

Des modifications ont été apportées sur les sources par d'autres développeurs, il est donc nécessaire de pouvoir mettre à jour vos sources locales. Il est important de noter que l'opération de mise à jour décrite ci-dessous n'altérera en rien les modifications vous avez pu apporter aux fichiers de votre copie locale. Subversion compare automatiquement les modifications non livrées de votre copie locale et celles provenant du serveur afin d'effectuer la mise à jour.

Mise à jour des modifications
1. Clic droit sur "C:\Subversion\MonProjet\trunk"
2. Sélectionner : SVN Mettre à jour

6. Création d'un tags

Jusqu'à présent nous travaillions dans le répertoire courant (le trunk), mais notre projet avance et il est temps de livrer la première version à nos clients. Nous voulons donc conserver une archive des sources ayant servi à générer la version compilée et livrable à nos clients . En cas de besoins nous pourrons bien entendu rapatrier ces sources, c'est tout l'intérêt des TAGS. Attention de ne pas effectuer de livraison ultérieure sur une version TAGS car celui ci perdrait tout son sens !

État de notre référentiel avant création du TAGS



Création du Tags V1.0
1.Clic droit sur "C:\Subversion\MonProjet\trunk"
2. Sélectionner : "Branches/étiquettes"
3. Saisir vers l'URL : "svn://localhost/MonProjet/tags/V1.0"


État de notre référentiel après création du tags
de notre V1.0




Mise à jour des modifications
1. Clic droit sur "C:\Subversion\MonProjet\"
2. Sélectionner : SVN Mettre à jour



7. Création d'une branche

Prenons un peu de recul sur ce que nous sommes en train de faire et regardons du coté du cycle de vie de notre projet. Nous avons dans "trunk" les sources de la version V1.0 et nous venons de créer une archive à l'identique dans Tags. La suite logique serait de développer la V2.0 de notre projet tout en corrigeant les bugs signalés par nos clients sur la version V1.0.

Pour réaliser cela nous allons créer une branche V1.1 sur laquelle nous apporterons les
corrections des bugs signalés par les utilisateurs de la V1.0, et continuerons de travailler dans "trunk" pour la v2.0 à ceci prés que nous y reporterons si nécessaire les corrections de bugs effectuées sur la V1.1.

Création d'une branche V1.1
1. Clic droit sur "C:\Subversion\MonProjet\tags\V1.0"
2. Sélectionner : "Branches/étiquettes"
3. Saisir vers l'URL : "svn://localhost/MonProjet/branches/V1.1"



Etat de notre référentiel aprés création
de la branche V1.1



Mise à jour des modifications

1. Clic droit sur "C:\Subversion\MonProjet\"
2. Sélectionner : SVN Mettre à jour

A présent les modifications de la version 1.1 peuvent être réalisées dans "C:\Subversion\MonProjet\branches\V1.1", et les nouvelles fonctionnalités à apporter en version 2.0 peuvent être réalisées dans le "C:\Subversion\MonProjet\trunk" de façon totalement indépendante.

8. Report de source


Vous avez modifié "C:\Subversion\MonProjet\branches\V1.1\Classe1.cs" et souhaitez reporter ces modification vers "C:\Subversion\MonProjet\trunk\Classe1.cs".

Report de source
1. Utilisez un outil tels que "WinMerge.exe"
2. Reporter les modifications sur votre copie locale
3. Clic droit sur "C:\Subversion\MonProjet\trunk"
4. Sélectionner : SVNLivrer ...

9. Gestion des conflits

Un conflit survient lorsque les sources ont été modifiées par un utilisateur entre le moment ou vous les avez mises à jour sur votre disque et le moment ou vous exécutez la commande "SVNLivrer".

En cas de conflit TortoiseSVN vous indiquera qu'il n'a pas pu livrer les sources, mais pas d'inquiétude car la plupart des conflits se résolvent automatiquement en effectuant une mise à jour des sources de votre copie locale (rappel : ceci n'écrasera pas vos modifications), puis en tentant de livrer à nouveau vos modifications.

Conflit géré automatiquement
1. Clic droit sur "C:\Subversion\MonProjet"
2. Sélectionner : SVN Mettre à jour
3. Sélectionner : SVNLivrer ...

Si la solution ci-dessus ne fonctionne pas c'est que le conflit concerne la même ligne de code ! Par exemple 2 utilisateurs ont tenté de livrer une correction sur la ligne 2 de Classe1.cs. Dans ce cas seul un développeur peut déterminer quelle modification doit être retenue. Il s'agit alors pour lui de comparer les 2 codes sources et de retenir le plus pertinent.

Conflit géré manuellement
1. Modifier le fichier concerné
2. Sélectionner : TortoiseSVN / Résoudre