33
27 juin 2007 1 Formation à l’utilisation d’un client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau http://www.cru.fr/ Rennes, 10 décembre 2008

27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau Rennes, 10 décembre 2008

Embed Size (px)

Citation preview

Page 1: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 1

Formation à l’utilisation d’un client Subversion

Vincent CarpierFlorent GuilleuxOlivier Lumineauhttp://www.cru.fr/

Rennes, 10 décembre 2008

Page 2: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 2

Programme

• 9h30 : accueil et introduction à Subversion

• 10h00 : début des travaux pratiques

• 12h30 : repas

• 14h00 : reprise des travaux pratiques

• 17h30 : fin

Page 3: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 3

Objectifs de la formation

1. comprendre les concepts de la gestion de version dans Subversion

2. apprendre les commandes de base et avancées pour gérer le cycle de développement d'un logiciel avec Subversion

3. maîtriser l'utilisation d'un client Subversion

Page 4: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 4

Choix du client Subversion

Aujourd’hui : TortoiseSVN, Subclipse ou en ligne de commande?

Langage de développement utilisé Framework de développement Système d'exploitation Support / connaissance Choix d'équipe ? .....

http://subversion.tigris.org/links.html#clients

Page 5: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 5

Organisation des travaux pratiques

• Un document à suivre avec exercices et quelques explications

• N’hésitez pas à nous demander des précisions ou plus d’explications !

• Au cours de la journée quelques présentations pour l’ensemble des participants

Page 6: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 6

Introduction à Subversion

Page 7: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 7

Subversion est un outil de gestion de version

• Permet de gérer l’historique des modifications de son projet

• Présenté comme le successeur de CVS• Version actuelle 1.5, 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èmes décentralisés (Git,

Mercurial…)

Page 8: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 8

La 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…

Page 9: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 9

… qui justifient l’effort de prise en main

commit

tag branches

repository

HEAD

BASEupdate

version

check out

modules

merge

conflict

diff

patchtrunk

Page 10: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 10

Les étapes de cette formation

1. Découvrir les concepts de Subversion

2. Utiliser les opérations de base

3. Travailler à plusieurs avec Subversion

4. Gérer le cycle de développement d’un logiciel

5. Fonctionnalités avancées

Page 11: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 11

Un dépôt central et une copie de travail

Référentiel

Copie de travail d’Alice

svn checkout svn commit svn commit

1 2 3trunk/

Page 12: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 12

Gérer des conflits

Page 13: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 13

Des conflits peuvent survenir

Référentiel

svn checkout svn commit

1 2

Copie de travail d’Alice

Copie de travail de

Bobsvn checkout svn commit

trunk/

Page 14: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 14

Résolution des conflits

Référentiel

svn checkout svn commit

1 2

Copie de travail d’Alice

Copie de travail de

Bobsvn checkout

svn commit

svn update

trunk/

Page 15: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 15

Si les modifications concernent des lignes différentes

UnDeuxTroisQuatre

ZéroUnDeuxTroisQuatre

UnDeuxTroisQUATRE

ZéroUnDeuxTroisQUATRE

svn update

État « merGed » : G

ZéroUnDeuxTroisQUATRE

svn commit

Bob

Alice

Page 16: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 16

Si les modifications concernent les mêmes lignes

UnDeuxTroisQuatre

UnTwoTroisQuatre

UnDosTroisQUATRE

Un<<<< .mineTwo====Dos>>>> .r2DeuxTroisQUATRE

svn update

État « Conflict » : C

Page 17: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 17

Si les modifications concernent les mêmes lignes

Un<<<< .mineTwo====Dos>>>> .r2TroisQUATRE

État « Conflict » : C

UnTwoTroisQUATRE

résolution manuelle

UnTwoTroisQUATRE

svn resolved

UnTwoTroisQUATRE

svn commit

Page 18: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 18

Cycle de travail typique1. Mettre à jour sa copie de travail

svn update

3. Visualiser les modificationssvn status (-u) / diff / revert

2. Apporter des modificationssvn add / copy / delete / move

4. Fusionner les modifications svn merge / resolved

6. Enregistrer ses modificationssvn commit

5. Mise à jour / Synchrosvn update

Page 19: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 19

Les étiquettes

Page 20: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 20

Une étiquette est un nom donné à une révision

Référentiel

215 345 418… … …482

Étiquettes REL-0.9 REL-1.1a

trunk/

Page 21: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 21

Une étiquette est stockée comme une copie

Référentiel

215 345 418… … …482trunk/

tags/

tags/REL-0.9

tags/REL-1.1a

419

420

Page 22: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 22

Les branches

Page 23: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 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

Page 24: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 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

Page 25: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 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

Page 26: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 26

Les 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)

Page 27: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 27

Exemple du cycle de préparation, diffusion et maintien d'une version

trunk

RB-1.0Début de la préparation de la nouvelle version

REL-1.0

Diffusion de la version

étiquettes

Nouvelles fonctionnalités

Correction bogues

Report corrections

Correction bogues

REL-1.0.1

Diffusion de la version

Correction bogues

REL-1.0.2

Diffusion de la version

RB-1.1Début de la

préparation d’une nouvelle version

Report correctionsReport corrections

Page 28: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 28

BUG-2561

Exemples d’utilisation de branches

trunk

RB-O.8

Ligne principale

Branche d’expérimentation

Branche de diffusion

Branche de correction de bogue

TRY-new_cache

Page 29: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 29

Une branche est stockée comme une copieRéférentiel

215 250 418… … …482trunk/

tags/

branches/ 216 217 … 314

315

RB-0.8

REL-0.8

Page 30: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 30

Conclusion

Page 31: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 31

A l’usage Subversion se révèle rapidement indispensable

• Cela vaut le coup de s’entraîner à l’utiliser

• Une fois les concepts acquis c’est simple à utiliser

• Une fois habitué il paraît difficile de s’en passer

Page 32: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 32

Il faut plus que connaître les commandes

• S’assurer que tous les développeurs du projet sauront l’utiliser : convaincre et former

• Mettre en œuvre petit à petit les fonctionnalités de Subversion

• Se mettre d’accord sur des pratiques d’utilisations• Définir des règles de nommage• Définir comment l’on utilise les branches et

étiquettes• Dans quels cas utilise-t-on le locking ? Les

propriétés ?• Documenter le tout

Page 33: 27 juin 20071 Formation à lutilisation dun client Subversion Vincent Carpier Florent Guilleux Olivier Lumineau  Rennes, 10 décembre 2008

27 juin 2007 33

Ressources

• http://www.cru.fr/faq/sourcesup/gestion_src/

• http://freshmeat.net/browse/1109/