Title: 27 juin 20071
1- Formation à lutilisation
- dun client Subversion
- Vincent Carpier
- Florent Guilleux
- http//www.cru.fr/
- Paris, 27 Juin 2007
2Programme
- 9h30 accueil et introduction à Subversion
- 10h00 début des travaux pratiques
- 12h30 repas
- 14h00 reprise des travaux pratiques
- 17h30 fin
3Objectifs de la formation
- comprendre les concepts de la gestion de version
dans Subversion - apprendre les commandes de base et avancées pour
gérer le cycle de développement d'un logiciel
avec Subversion - maîtriser l'utilisation d'un client Subversion
4Choix du client Subversion
- Aujourdhui TortoiseSVN ou Subclipse ?
- Langage de développement utilisé
- Framework de développement
- Système d'exploitation
- Support / connaissance
- Choix d'équipe ?
- .....
- http//subversion.tigris.org/links.htmlclients
5Organisation des travaux pratiques
- En binômes
- Un document à suivre avec exercices et quelques
explications - Nhésitez pas à nous demander des précisions ou
plus dexplications ! - Au cours de la journée quelques présentations
pour lensemble des participants
6Introduction à Subversion
7Subversion est un outil de gestion de version
- Permet de gérer lhistorique des modifications de
son projet - Présenté comme le successeur de CVS
- Version actuelle 1.4, la version 1.0 date de
février 2004 - Produit open source, supporté par CollabNet
- Utilisé par en entreprise et par de nombreux
projets du libre (Apache, KDE, Gnome, Python)? - Alternative système décentralisés (voir
http//2005.jres.org/paper/2.pdf)?
8La gestion de version apporte de nombreux gains
- Retours en arrière et corrections toujours
possibles - Historique de toutes les opérations
- Indispensable pour le travail en équipe
- Travaux en parallèle sur plusieurs branches
- Pour du code mais aussi un site web, de la doc
9 qui justifient leffort de prise en main
trunk
patch
version
commit
modules
diff
tag
merge
branches
BASE
repository
update
HEAD
conflict
check out
10Les étapes de cette formation
- Découvrir les concepts de Subversion
- Utiliser les opérations de base
- Travailler à plusieurs avec Subversion
- Gérer le cycle de développement dun logiciel
- Fonctionnalités avancées
11Un dépôt central et une copie de travail
Référentiel
trunk/
1
3
2
svn checkout
svn commit
svn commit
Copie de travail dAlice
12Gérer des conflits
13Des conflits peuvent survenir
Copie de travail de Bob
svn commit
svn checkout
Référentiel
trunk/
1
svn checkout
svn commit
Copie de travail dAlice
14Résolution des conflits
Copie de travail de Bob
svn update
svn commit
svn checkout
Référentiel
trunk/
1
2
svn commit
svn checkout
Copie de travail dAlice
15Si les modifications concernent des lignes
différentes
État merGed G
Bob
Zéro Un Deux Trois QUATRE
Zéro Un Deux Trois Quatre
svn commit
svn update
Zéro Un Deux Trois QUATRE
Un Deux Trois Quatre
Un Deux Trois QUATRE
Alice
16Si les modifications concernent les mêmes lignes
État Conflict C
Un ltltltlt .mine Two Dos gtgtgtgt
.r2 Deux Trois QUATRE
Un Two Trois Quatre
svn update
Un Deux Trois Quatre
Un Dos Trois QUATRE
17Si les modifications concernent les mêmes lignes
Un ltltltlt .mine Two Dos gtgtgtgt .r2 Trois QUATRE
Un Two Trois QUATRE
Un Two Trois QUATRE
svn resolved
résolution manuelle
svn commit
Un Two Trois QUATRE
État Conflict C
18Cycle de travail typique
1. Mettre à jour sa copie de travail svn update
5. Mise à jour / Synchro svn update
- 4. Fusionner les modifications
- svn merge / resolved
19Les étiquettes
20Une étiquette est un nom donné à une révision
Référentiel
482
418
345
trunk/
215
REL-1.1a
Étiquettes
21Une étiquette est stockée comme une copie
Référentiel
trunk/
418
345
215
tags/REL-0.9
419
tags/
tags/REL-1.1a
22Les branches
23 Les contraintes posées par la gestion de
multiples versions d'un logiciel (1)?
- pour préparer la sortie d'une nouvelle version,
on ne travaille plus que sur la correction de
bogues - mais pendant ce temps d'autres développeurs
peuvent vouloir introduire de nouvelles
fonctionnalités pour les futures versions
24 Les contraintes posées par la gestion de
multiples versions d'un logiciel (2)?
- quand on corrige un bogue dans une version, il
faut pouvoir reporter cette correction dans les
autres versions maintenues
25 Les contraintes posées par la gestion de
multiples versions d'un logiciel (3)?
- certaines fonctionnalités d'une version ont
peut-être disparues dans des version ultérieures - mais tant que cette version est maintenue
activement, il faut pouvoir corriger les bogues
de ces fonctionnalités
26Les branches sont utiles pour gérer ces
contraintes
- Une branche est une ligne de développement
parallèle - Elle a son propre historique et suivi des
modifications - La fonctionnalité de merge permet de reporter des
modifications réalisées dans une branche dans le
trunk et vice versa (ou entre branches)?
27Exemple du cycle de préparation, diffusion et
maintien d'une version
REL-1.0.1
REL-1.0.2
REL-1.0
étiquettes
Diffusion de la version
Diffusion de la version
Diffusion de la version
Début de la préparation de la nouvelle version
Correction bogues
Correction bogues
Report corrections
Report corrections
Report corrections
trunk
Correction bogues
Nouvelles fonctionnalités
Début de la préparation dune nouvelle version
RB-1.1
28Exemples dutilisation de branches
Branche de correction de bogue
Branche de diffusion
trunk
Ligne principale
Branche dexpérimentation
29Une branche est stockée comme une copie
Référentiel
482
418
trunk/
250
215
217
216
314
branches/
RB-0.8
315
REL-0.8
tags/
30Conclusion
31A lusage Subversion se révèle rapidement
indispensable
- Cela vaut le coup de sentraîner à lutiliser
- Une fois les concepts acquis cest simple Ã
utiliser - Une fois habitué il paraît difficile de sen
passer
32Il faut plus que connaître les commandes
- Sassurer que tous les développeurs du projet
sauront lutiliser convaincre et former - Mettre en œuvre petit à petit les fonctionnalités
de Subversion - Se mettre daccord sur des pratiques
dutilisations - Définir des règles de nommage
- Définir comment lon utilise les branches et
étiquettes - Dans quels cas utilise-t-on le locking ? Les
propriétés ? - Documenter le tout
33Ressources
- http//www.cru.fr/faq/sourcesup/gestion_src/
- http//freshmeat.net/browse/1109/