• Aucun résultat trouvé

R´ esum´ e d’un cycle de travail sous Subversion

Nous allons r´esumer ici les diff´erentes commandes de base pour travailler avec Subversion sous forme du cycle de commande habituel :

1. Cr´eation d’un d´epˆot :svnadmin create

2. Copie d’un projet pour gestion dans ce d´epˆot :svn import

3. R´ecup´eration d’une copie de projet depuis le d´epˆot :svn checkout i. Modification du contenu du projet :

de fa¸con classique (´editeur de texte) rajout de fichiers : svn add

copie de fichiers : svn copy

d´eplacement de fichiers : svn move effacement de fichiers : svn delete ii. Consultation des modifications :svn status iii. Soumission des modifications : svn commit 3.7 Les logs

A chaque fois que nous avons soumis des modifications dans la base, nous les avons accompagn´ees d’un message par le biais de l’option -m de svn commit. L’ensemble de ces messages peut ˆetre consult´e par le biais de l’instruction svn log, qui nous fournit en outre la date de chaque modification ainsi que son auteur :

1 $ svn log

2

-3 r3 | m e i s t e r | 2005 -02 -23 1 1 : 0 4 : 2 0 + 0 1 0 0 ( Wed , 23 Feb 2 0 0 5 ) | 1 l i n e

4

5 m o d i f i c a t i o n de la d e f i n i t i o n du t a b l e a u x c o l

6

-7 r2 | m e i s t e r | 2005 -02 -23 1 1 : 0 2 : 3 9 + 0 1 0 0 ( Wed , 23 Feb 2 0 0 5 ) | 1 l i n e

8

9 c h a n g e m e n t des en - t e t e s

10

-11 r1 | m e i s t e r | 2005 -02 -23 1 0 : 5 9 : 2 6 + 0 1 0 0 ( Wed , 23 Feb 2 0 0 5 ) | 1 l i n e

12

13 I m p o r t i n i t i a l

14

-4 Utilisation de Subversion avec diff´ erents d´ eveloppeurs

Dans cette partie, nous allons traiter le cas o`u diff´erents d´eveloppeurs ont acc`es `a la base Subversion : c’est le cas de la plupart des projets en ´equipe. Dans l’exemple pr´ec´edent, tout allait bien car un seul d´eveloppeur pouvait modifier la base. Mais en ´equipe, il sera fr´equent que deux d´eveloppeurs ou plus fassent des modifications sur le mˆeme fichier de fa¸con simultan´ee. Il ne faut ´evidemment surtout pas que chacun puisse ´ecraser les modifications des autres, ni que tous soient paralys´es en attendant qu’un utilisateur ait fini de modifier un fichier et pouvoir `a leur tour y apporter des modifications.

Que se passe-t-il alors ? Sur la figure 3 est repr´esent´ee de fa¸con sch´ematique la gestion des conflits de fichiers. Quand un fichier est modifi´e par deux personnes diff´erentes, le premier d´eveloppeur `a enregistrer ses modifications dans la base, change la version du fichier concern´e.

Lorsque le second d´eveloppeur d´esire soumettre son fichier, la base l’avertit que le fichier a d´ej`a

´

et´e modifi´e et ne l’autorise pas `a soumettre. Ce d´eveloppeur peut alors r´ecup´erer le fichier de la base et le comparer au sien localement. Il r´ealise alors lui-mˆeme un fichier hybride qui mˆele les d´eveloppements des deux utilisateurs. Il soumet ce nouveau fichier `a la base, qui incr´emente le num´ero de version de la base.

Dans ce type de conflit, rien ne remplace la communication entre les d´eveloppeurs qui doivent s’assurer de la coh´erence de leurs d´eveloppements avec ceux des autres. Sur des projets avec de nombreux d´eveloppeurs, les conflits sont g´er´es par des administrateurs qui sont charg´es de prendre en compte les modifications de chacun. Cependant lorsque les ´equipes de travail ne sont pas trop grandes, un contact par t´el´ephone ou par mail est suffisant pour r´esoudre la plupart des conflits rencontr´es.

Nous allons supposer le cas de deux d´eveloppeurs (deleutre et meister) travaillant sur une mˆeme base Subversion h´eberg´ee sur le serveur codiciel4. L’authentification sur ce serveur se fera avecsshmais il existe d’autres possibiilit´es d’acc`es `a un serveur Subversion. En particulier, on peut noter que nativement, Subversion peut fonctionner avec un serveur web Apache. En fonction du mode serveur avec lequel Subversion fonctionne, on utilisera pour le d´ebut du chemin du d´epˆot :

file://: pour un d´epˆot sur un disque local ;

svn://: pour un d´epˆot distant avec un serveur Subversion dont l’authentification est g´er´ee par Subversion ;

svn+ssh:// : pour un d´epˆot distant avec un serveur Subversion dont l’authentification est g´er´ee par ssh ;

http://: pour un d´epˆot distant avec un serveur web ;

Dans le d´epˆot sur lequeldeleutreetmeistervont travailler il y a deux fichiers :conflit a gerer.txt etconflit automatise.txt. Le contenu de ces fichiers est le suivant :

conflit automatise.txt

1 L i g n e a m o d i f i e r par d e l e u t r e :

2 L i g n e a m o d i f i e r par m e i s t e r : conflit a gerer.txt :

1 c e t t e l i g n e est m o d i f i e e par : < Nom d e v e l o p p e u r >

2 Je s u i s d e l e u t r e ( oui / non ) :

3 Je s u i s m e i s t e r ( oui / non ) :

4.1 R´ecup´eration de la base

Sur leurs comptes respectifs, deleutreetmeisterr´ecup`erent le contenu de la base :

1 m e i s t e r $ svn c h e c k o u t svn + ssh :// c o d i c i e l 4 / d e p o t _ e x e m p l e / p r o j e t w o r k

2 m e i s t e r @ c o d i c i e l 4 ’ s p a s s w o r d :

3 A w o r k / c o n f l i t _ a _ g e r e r . txt

4 A w o r k / c o n f l i t _ a u t o m a t i s e . txt

5 C h e c k e d out r e v i s i o n 1.

et

1 d e l e u t r e $ svn c h e c k o u t svn + ssh :// c o d i c i e l 4 / d e p o t _ e x e m p l e / p r o j e t t r a v a i l _ s u b v e r s i o n

2 d e l e u t r e @ c o d i c i e l 4 ’ s p a s s w o r d :

3 A t r a v a i l _ s u b v e r s i o n / c o n f l i t _ a _ g e r e r . txt

4 A t r a v a i l _ s u b v e r s i o n / c o n f l i t _ a u t o m a t i s e . txt

5 C h e c k e d out r e v i s i o n 1.

4.2 Conflit g´er´e par Subversion

En fait, si les modifications faites par les d´eveloppeurs ne concernent pas les mˆemes lignes, Subversion g`ere lui-mˆeme la fusion des diff´erences. Le fichierconflit automatise.txtmodifi´e par :

deleutreest maintenant :

1 L i g n e c o m m u n e

2 L i g n e a m o d i f i e r par d e l e u t r e : b o n j o u r m e i s t e r

3 L i g n e a m o d i f i e r par m e i s t e r :

4 une a u t r e l i g n e c o m m u n e meisterest maintenant :

1 L i g n e c o m m u n e

2 L i g n e a m o d i f i e r par d e l e u t r e :

3 L i g n e a m o d i f i e r par m e i s t e r : s a l u t d e l e u t r e

4 une a u t r e l i g n e c o m m u n e

On peut voir que dans ce cas aucune modification de l’un n’empi`ete sur celle de l’autre.

Supposons quedeleutresoit le premier `a soumettre ses modifications :

1 d e l e u t r e $ svn s t a t u s

2 M c o n f l i t _ a u t o m a t i s e . txt

3 d e l e u t r e $ svn c o m m i t - m " m e s s a g e p o u r m e i s t e r "

4 d e l e u t r e @ c o d i c i e l 4 ’ s p a s s w o r d :

5 S e n d i n g c o n f l i t _ a u t o m a t i s e . txt

6 T r a n s m i t t i n g f i l e d a t a .

7 C o m m i t t e d r e v i s i o n 2.

C’est maintenant le tour de meister:

1 m e i s t e r $ svn s t a t u s

2 M c o n f l i t _ a u t o m a t i s e . txt

3 m e i s t e r $ svn c o m m i t - m " m e s s a g e p o u r d e l e u t r e "

4 m e i s t e r @ c o d i c i e l 4 ’ s p a s s w o r d :

5 S e n d i n g c o n f l i t _ a u t o m a t i s e . txt

6 T r a n s m i t t i n g f i l e d a t a . svn : C o m m i t f a i l e d ( d e t a i l s f o l l o w ) :

7 svn : Out of d a t e : ’ c o n f l i t _ a u t o m a t i s e . txt ’ in t r a n s a c t i o n ’3 ’ Le messagesvn : Out of date : ’conflit automatise.txt’ in transaction ’3’indique

`

a meister qu’il doit mettre son r´epertoire local `a jour. Pour cela, il faut utiliser la commande svn update:

1 m e i s t e r $ svn u p d a t e

2 m e i s t e r @ c o d i c i e l 4 ’ s p a s s w o r d :

3 G c o n f l i t _ a u t o m a t i s e . txt

4 U p d a t e d to r e v i s i o n 2.

La lettre G dans la premi`ere colonne indique que les modifications contenus dans la base n’empi`etent pas sur celles du r´epertoire local. Il suffit de recommencer la soumission :

1 m e i s t e r $ svn c o m m i t - m " m e s s a g e p o u r d e l e u t r e "

2 m e i s t e r @ c o d i c i e l 4 ’ s p a s s w o r d :

3 S e n d i n g c o n f l i t _ a u t o m a t i s e . txt

4 T r a n s m i t t i n g f i l e d a t a .

5 C o m m i t t e d r e v i s i o n 3.

Maintenant, chacun des d´eveloppeurs peut remettre son r´epertoire local `a jour et regarder le contenu du fichierconflit automatise.txt:

1 m e i s t e r $ svn u p d a t e

2 m e i s t e r @ c o d i c i e l 4 ’ s p a s s w o r d :

3 At r e v i s i o n 3.

4 m e i s t e r $ m o r e c o n f l i t _ a u t o m a t i s e . txt

5 L i g n e c o m m u n e

6 L i g n e a m o d i f i e r par d e l e u t r e : b o n j o u r m e i s t e r

7 L i g n e a m o d i f i e r par m e i s t e r : s a l u t d e l e u t r e

8 une a u t r e l i g n e c o m m u n e

Toutes les modifications sont dans la base.

4.3 Conflit `a g´erer manuellement Le fichier conflit a gerer.txt modifi´e par : deleutreest maintenant :

1 l i g n e c o m m u n e

2 c e t t e l i g n e est m o d i f i e e par : d e l e u t r e

3 Je s u i s d e l e u t r e ( oui / non ) : oui

4 Je s u i s m e i s t e r ( oui / non ) : non meisterest maintenant :

1 l i g n e c o m m u n e

2 c e t t e l i g n e est m o d i f i e e par : m e i s t e r

3 Je s u i s d e l e u t r e ( oui / non ) : non

4 Je s u i s m e i s t e r ( oui / non ) : oui

Toutes les modifications sont cette fois-ci incompatibles. deleutresoumet ses modifications :

1 d e l e u t r e $ svn c o m m i t - m " r e m p l i s s a g e du f o r m u l a i r e "

2 d e l e u t r e @ c o d i c i e l 4 ’ s p a s s w o r d :

3 S e n d i n g c o n f l i t _ a _ g e r e r . txt

4 T r a n s m i t t i n g f i l e d a t a .

5 C o m m i t t e d r e v i s i o n 4.

puis c’est au tour demeister :

1 m e i s t e r $ svn c o m m i t - m " f o r m u l a i r e r e m p l i "

2 m e i s t e r @ c o d i c i e l 4 ’ s p a s s w o r d :

3 S e n d i n g c o n f l i t _ a _ g e r e r . txt

4 T r a n s m i t t i n g f i l e d a t a . svn : C o m m i t f a i l e d ( d e t a i l s f o l l o w ) :

5 svn : Out of d a t e : ’ c o n f l i t _ a _ g e r e r . txt ’ in t r a n s a c t i o n ’6 ’

Comme pr´ec´edemment, on utilise svn update pour mettre `a jour le contenu du r´epertoire de travail local :

1 m e i s t e r $ svn u p d a t e

2 m e i s t e r @ c o d i c i e l 4 ’ s p a s s w o r d :

3 C c o n f l i t _ a _ g e r e r . txt

4 U p d a t e d to r e v i s i o n 4.

La lettre C dans la premi`ere colonne indique cette fois-ci un conflit `a g´erer manuellement.

Lorsque ceci arrive sur un fichier file, Subversion modifie le r´epertoire local du d´eveloppeur en cr´eant diff´erents fichiers suppl´ementaires :

1. file : contient maintenant l’ensemble des modifications :

2. file.mine : contient le fichier file modifi´e par l’utilisateur, avant que celui-ci ne mette

`

a jour son r´epertoire ;

3. file.r#old (o`u #old est le num´ero de l’ancienne r´evision) : c’est le fichier de la base avant que l’utilisateur ne fasse ses propres modifications ;

4. file.r#new(o`u #new est le num´ero de la nouvelle r´evision) : c’est le fichier de la base le plus r´ecent.

Dans notre cas :

1 m e i s t e r $ ls - l

2 c o n f l i t _ a _ g e r e r . txt

3 c o n f l i t _ a _ g e r e r . txt . m i n e

4 c o n f l i t _ a _ g e r e r . txt . r3

5 c o n f l i t _ a _ g e r e r . txt . r4

6 c o n f l i t _ a u t o m a t i s e . txt

7

8 m e i s t e r $ m o r e c o n f l i t _ a _ g e r e r . txt

9 l i g n e c o m m u n e

10 < < < < < < < . m i n e

11 c e t t e l i g n e est m o d i f i e e par : m e i s t e r

12 Je s u i s d e l e u t r e ( oui / non ) : non

13 Je s u i s m e i s t e r ( oui / non ) : oui

14 = = = = = = =

15 c e t t e l i g n e est m o d i f i e e par : d e l e u t r e

16 Je s u i s d e l e u t r e ( oui / non ) : oui

17 Je s u i s m e i s t e r ( oui / non ) : non

18 > > > > > > > . r4

19

20 m e i s t e r $ m o r e c o n f l i t _ a _ g e r e r . txt . m i n e

21 l i g n e c o m m u n e

22 c e t t e l i g n e est m o d i f i e e par : m e i s t e r

23 Je s u i s d e l e u t r e ( oui / non ) : non

24 Je s u i s m e i s t e r ( oui / non ) : oui

25

26 m e i s t e r $ m o r e c o n f l i t _ a _ g e r e r . txt . r3

27 l i g n e c o m m u n e

28 c e t t e l i g n e est m o d i f i e e par : < Nom d e v e l o p p e u r >

29 Je s u i s d e l e u t r e ( oui / non ) :

30 Je s u i s m e i s t e r ( oui / non ) :

31

32 m e i s t e r $ m o r e c o n f l i t _ a _ g e r e r . txt . r4

33 l i g n e c o m m u n e

34 c e t t e l i g n e est m o d i f i e e par : d e l e u t r e

35 Je s u i s d e l e u t r e ( oui / non ) : oui

36 Je s u i s m e i s t e r ( oui / non ) : non Le d´eveloppeur a alors trois choix possibles :

1. g´erer le conflit manuellement ;

2. ´ecraser le fichier du r´epertoire par l’une de ces variantes temporaires ;

3. taper la commande svn revertsuivi du nom du fichier pour ´eliminer toute modification locale.

Nous allons ici g´erer le conflit manuellement.meister change le contenu du fichier en :

1 m e i s t e r $ m o r e c o n f l i t _ a _ g e r e r . txt

2 l i g n e c o m m u n e

3 c e t t e l i g n e est m o d i f i e e par : d e l e u t r e p u i s m e i s t e r

4 Je s u i s d e l e u t r e ( oui / non ) : non

5 Je s u i s m e i s t e r ( oui / non ) : oui

Il faut ensuite indiquer `a Subversion que le conflit a ´et´e r´esolu avec la commandesvn resolved suivie du nom du fichier concern´e. Cette commande efface ´egalement les fichiers temporaires.

Ensuite on peut soumettre les modifications classiquement.

1 m e i s t e r $ svn r e s o l v e d c o n f l i t _ a _ g e r e r . txt

2 R e s o l v e d c o n f l i c t e d s t a t e of ’ c o n f l i t _ a _ g e r e r . txt ’

3 m e i s t e r $ ls - l

4 c o n f l i t _ a _ g e r e r . txt

5 c o n f l i t _ a u t o m a t i s e . txt

6 m e i s t e r $ svn c o m m i t - m " m e i s t e r a le d e r n i e r mot "

7 m e i s t e r @ c o d i c i e l 4 ’ s p a s s w o r d :

8 S e n d i n g c o n f l i t _ a _ g e r e r . txt

9 T r a n s m i t t i n g f i l e d a t a .

10 C o m m i t t e d r e v i s i o n 5.

5 Comment utiliser Subversion pour suivre l’historique

Nous avons jusqu’ici vu comment il ´etait possible d’utiliser Subversion pour archiver l’ensemble des modifications faites `a un projet. Comme tout gestionnaire de versions, il est aussi possible de revoir des versions plus anciennes, de reprendre des fichiers de versions diff´erentes et d’en faire une nouvelle version de projet, de comparer des versions successives de fichiers entre elles, etc. Nous allons voir ces diff´erents aspects dans cette partie.

5.1 svn log

La commande svn log permet de suivre les modifications faites `a chaque nouvelle version.

Exemple pour l’exemple pr´ec´edent :

1 [ 5 0 8 c o d i c i e l 4 : m e i s t e r ] $ svn log

2 m e i s t e r @ c o d i c i e l 4 ’ s p a s s w o r d :

3

-4 r5 | m e i s t e r | 2005 -02 -23 1 7 : 5 3 : 0 4 + 0 1 0 0 ( Wed , 23 Feb 2 0 0 5 ) | 1 l i n e

5

6 m e i s t e r a le d e r n i e r mot

7

-8 r4 | d e l e u t r e | 2005 -02 -23 1 7 : 2 7 : 3 4 + 0 1 0 0 ( Wed , 23 Feb 2 0 0 5 ) | 1 l i n e

9

10 r e m p l i s s a g e du f o r m u l a i r e

11

-12 r3 | m e i s t e r | 2005 -02 -23 1 7 : 1 0 : 0 1 + 0 1 0 0 ( Wed , 23 Feb 2 0 0 5 ) | 1 l i n e

13

14 m e s s a g e p o u r d e l e u t r e

15

-16 r2 | d e l e u t r e | 2005 -02 -23 1 7 : 0 1 : 3 4 + 0 1 0 0 ( Wed , 23 Feb 2 0 0 5 ) | 1 l i n e

17

18 m e s s a g e p o u r m e i s t e r

19

-20 r1 | m e i s t e r | 2005 -02 -23 1 6 : 5 2 : 4 8 + 0 1 0 0 ( Wed , 23 Feb 2 0 0 5 ) | 1 l i n e

21

22 i m p o r t i n i t i a l des f i c h i e r s e x e m p l e s

23 -L’option -vd´etaille plus pr´ecis´ement les changements de la base pour chacune des versions :

1 [ 5 0 9 c o d i c i e l 4 : m e i s t e r ] $ svn log - v

2 m e i s t e r @ c o d i c i e l 4 ’ s p a s s w o r d :

3

-4 r5 | m e i s t e r | 2005 -02 -23 1 7 : 5 3 : 0 4 + 0 1 0 0 ( Wed , 23 Feb 2 0 0 5 ) | 1 l i n e

5 C h a n g e d p a t h s :

6 M / c o n f l i t _ a _ g e r e r . txt

7

8 m e i s t e r a le d e r n i e r mot

9

-10 r4 | d e l e u t r e | 2005 -02 -23 1 7 : 2 7 : 3 4 + 0 1 0 0 ( Wed , 23 Feb 2 0 0 5 ) | 1 l i n e

11 C h a n g e d p a t h s :

12 M / c o n f l i t _ a _ g e r e r . txt

13

14 r e m p l i s s a g e du f o r m u l a i r e

15

-16 r3 | m e i s t e r | 2005 -02 -23 1 7 : 1 0 : 0 1 + 0 1 0 0 ( Wed , 23 Feb 2 0 0 5 ) | 1 l i n e

17 C h a n g e d p a t h s :

18 M / c o n f l i t _ a u t o m a t i s e . txt

19

20 m e s s a g e p o u r d e l e u t r e

21

-22 r2 | d e l e u t r e | 2005 -02 -23 1 7 : 0 1 : 3 4 + 0 1 0 0 ( Wed , 23 Feb 2 0 0 5 ) | 1 l i n e

23 C h a n g e d p a t h s :

24 M / c o n f l i t _ a u t o m a t i s e . txt

25

26 m e s s a g e p o u r m e i s t e r

27

-28 r1 | m e i s t e r | 2005 -02 -23 1 6 : 5 2 : 4 8 + 0 1 0 0 ( Wed , 23 Feb 2 0 0 5 ) | 1 l i n e

29 C h a n g e d p a t h s :

30 A / c o n f l i t _ a _ g e r e r . txt

31 A / c o n f l i t _ a u t o m a t i s e . txt

32

33 i m p o r t i n i t i a l des f i c h i e r s e x e m p l e s

34

-Enfin, il est possible de pr´eciser avec l’option -r un seul num´ero de r´evision, ou une plage de r´evisions si l’on donne deux num´eros de r´evision s´epar´es par le caract`ere ” :” :

1 [ 5 0 4 c o d i c i e l 4 : m e i s t e r ] $ svn log - r 3:5 - v

2 m e i s t e r @ c o d i c i e l 4 ’ s p a s s w o r d :

3

-4 r3 | m e i s t e r | 2005 -02 -23 1 7 : 1 0 : 0 1 + 0 1 0 0 ( Wed , 23 Feb 2 0 0 5 ) | 1 l i n e

5 C h a n g e d p a t h s :

6 M / c o n f l i t _ a u t o m a t i s e . txt

7

8 m e s s a g e p o u r d e l e u t r e

9

-10 r4 | d e l e u t r e | 2005 -02 -23 1 7 : 2 7 : 3 4 + 0 1 0 0 ( Wed , 23 Feb 2 0 0 5 ) | 1 l i n e

11 C h a n g e d p a t h s :

12 M / c o n f l i t _ a _ g e r e r . txt

13

14 r e m p l i s s a g e du f o r m u l a i r e

15

-16 r5 | m e i s t e r | 2005 -02 -23 1 7 : 5 3 : 0 4 + 0 1 0 0 ( Wed , 23 Feb 2 0 0 5 ) | 1 l i n e

17 C h a n g e d p a t h s :

18 M / c o n f l i t _ a _ g e r e r . txt

19

20 m e i s t e r a le d e r n i e r mot

21

-5.2 svn diff

La commande svn diffpermet de regarder les diff´erences (comme le donne diff) entre deux r´evisions donn´ees.

Avant de soumettre les modifications `a la base Subversion, on peut utiliser svn diff pour comparer les fichiers modifi´es localement `a ceux de la base. Exemple, si meistera rajout´e une modification `a un fichier de l’exemple pr´ec´edent :

1 [ 5 1 8 c o d i c i e l 4 : m e i s t e r ] $ svn s t a t u s

2 M c o n f l i t _ a _ g e r e r . txt

3 [ 5 1 9 c o d i c i e l 4 : m e i s t e r ] $ svn d i f f

4 I n d e x : c o n f l i t _ a _ g e r e r . txt

5 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

6 - - - c o n f l i t _ a _ g e r e r . txt ( r e v i s i o n 5)

7 +++ c o n f l i t _ a _ g e r e r . txt ( w o r k i n g c o p y )

8 @@ -2 ,3 +2 ,4 @@

9 c e t t e l i g n e est m o d i f i e e par : d e l e u t r e p u i s m e i s t e r

10 Je s u i s d e l e u t r e ( oui / non ) : non

11 Je s u i s m e i s t e r ( oui / non ) : oui

12 + r a j o u t e e p o u r e x e m p l e a v e c d i f f

Ceci ne fonctionne que si les fichiers n’ont pas encore ´et´e soumis.

Il est ´egalement possible de comparer les fichiers locaux `a ceux d’une version donn´ee en utilisant l’option-r :

1 [ 5 2 7 c o d i c i e l 4 : m e i s t e r ] $ svn d i f f - r 1

2 m e i s t e r @ c o d i c i e l 4 ’ s p a s s w o r d :

3 m e i s t e r @ c o d i c i e l 4 ’ s p a s s w o r d :

4 I n d e x : c o n f l i t _ a _ g e r e r . txt

5 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

6 - - - c o n f l i t _ a _ g e r e r . txt ( r e v i s i o n 1)

7 +++ c o n f l i t _ a _ g e r e r . txt ( w o r k i n g c o p y )

8 @@ -1 ,4 +1 ,4 @@

9 l i g n e c o m m u n e

10 - c e t t e l i g n e est m o d i f i e e par : < Nom d e v e l o p p e u r >

11 - Je s u i s d e l e u t r e ( oui / non ) :

12 - Je s u i s m e i s t e r ( oui / non ) :

13 \ No n e w l i n e at end of f i l e

14 + c e t t e l i g n e est m o d i f i e e par : d e l e u t r e p u i s m e i s t e r

15 + Je s u i s d e l e u t r e ( oui / non ) : non

16 + Je s u i s m e i s t e r ( oui / non ) : oui

17 I n d e x : c o n f l i t _ a u t o m a t i s e . txt

18 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

19 - - - c o n f l i t _ a u t o m a t i s e . txt ( r e v i s i o n 1)

20 +++ c o n f l i t _ a u t o m a t i s e . txt ( w o r k i n g c o p y )

21 @@ -1 ,4 +1 ,4 @@

22 L i g n e c o m m u n e

23 - L i g n e a m o d i f i e r par d e l e u t r e :

24 - L i g n e a m o d i f i e r par m e i s t e r :

25 + L i g n e a m o d i f i e r par d e l e u t r e : b o n j o u r m e i s t e r

26 + L i g n e a m o d i f i e r par m e i s t e r : s a l u t d e l e u t r e

27 une a u t r e l i g n e c o m m u n e

Et on peut pr´eciser un fichier en particulier :

1 [ 5 2 8 c o d i c i e l 4 : m e i s t e r ] $ svn d i f f - r 3 c o n f l i t _ a _ g e r e r . txt

2 m e i s t e r @ c o d i c i e l 4 ’ s p a s s w o r d :

3 m e i s t e r @ c o d i c i e l 4 ’ s p a s s w o r d :

4 I n d e x : c o n f l i t _ a _ g e r e r . txt

5 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

6 - - - c o n f l i t _ a _ g e r e r . txt ( r e v i s i o n 3)

7 +++ c o n f l i t _ a _ g e r e r . txt ( w o r k i n g c o p y )

8 @@ -1 ,4 +1 ,4 @@

9 l i g n e c o m m u n e

10 - c e t t e l i g n e est m o d i f i e e par : < Nom d e v e l o p p e u r >

11 - Je s u i s d e l e u t r e ( oui / non ) :

12 - Je s u i s m e i s t e r ( oui / non ) :

13 \ No n e w l i n e at end of f i l e

14 + c e t t e l i g n e est m o d i f i e e par : d e l e u t r e p u i s m e i s t e r

15 + Je s u i s d e l e u t r e ( oui / non ) : non

16 + Je s u i s m e i s t e r ( oui / non ) : oui

Enfin il est possible de comparer deux versions en s´eparant leurs num´eros par le caract`ere ” : ” :

1 [ 5 2 9 c o d i c i e l 4 : m e i s t e r ] $ svn d i f f - r 2:5

2 m e i s t e r @ c o d i c i e l 4 ’ s p a s s w o r d :

3 I n d e x : c o n f l i t _ a _ g e r e r . txt

4 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

5 - - - c o n f l i t _ a _ g e r e r . txt ( r e v i s i o n 2)

6 +++ c o n f l i t _ a _ g e r e r . txt ( r e v i s i o n 5)

7 @@ -1 ,4 +1 ,4 @@

8 l i g n e c o m m u n e

9 - c e t t e l i g n e est m o d i f i e e par : < Nom d e v e l o p p e u r >

10 - Je s u i s d e l e u t r e ( oui / non ) :

11 - Je s u i s m e i s t e r ( oui / non ) :

12 \ No n e w l i n e at end of f i l e

13 + c e t t e l i g n e est m o d i f i e e par : d e l e u t r e p u i s m e i s t e r

14 + Je s u i s d e l e u t r e ( oui / non ) : non

15 + Je s u i s m e i s t e r ( oui / non ) : oui

16 I n d e x : c o n f l i t _ a u t o m a t i s e . txt

17 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

18 - - - c o n f l i t _ a u t o m a t i s e . txt ( r e v i s i o n 2)

19 +++ c o n f l i t _ a u t o m a t i s e . txt ( r e v i s i o n 5)

20 @@ -1 ,4 +1 ,4 @@

21 L i g n e c o m m u n e

22 L i g n e a m o d i f i e r par d e l e u t r e : b o n j o u r m e i s t e r

23 - L i g n e a m o d i f i e r par m e i s t e r :

24 + L i g n e a m o d i f i e r par m e i s t e r : s a l u t d e l e u t r e

25 une a u t r e l i g n e c o m m u n e

5.3 svn update

La commande svn update permet de r´ecup´erer les fichiers d’une r´evision donn´ee en utilisant l’option-r :

1 [ 5 3 3 c o d i c i e l 4 : m e i s t e r ] $ svn u p d a t e - r 3

2 m e i s t e r @ c o d i c i e l 4 ’ s p a s s w o r d :

3 At r e v i s i o n 3.

4 [~/ w o r k ]

5 [ 5 3 4 c o d i c i e l 4 : m e i s t e r ] $ svn i n f o

6 P a t h : .

7 URL : svn + ssh :// c o d i c i e l 4 / d e p o t _ e x e m p l e / p r o j e t

8 R e p o s i t o r y U U I D : c e 7 a f 9 a b - c9f0 -0310 - bae6 - 9 2 6 f c 7 9 5 d 9 2 6

9 R e v i s i o n : 3

10 N o d e K i n d : d i r e c t o r y

11 S c h e d u l e : n o r m a l

12 L a s t C h a n g e d A u t h o r : m e i s t e r

13 L a s t C h a n g e d Rev : 3

14 L a s t C h a n g e d D a t e : 2005 -02 -23 1 7 : 1 0 : 0 1 + 0 1 0 0 ( Wed , 23 Feb 2 0 0 5 ) Si l’on ne pr´ecise rien, svn updater´ecup`ere la version la plus r´ecente de la base.

5.4 svn cat

La commande svn cat sert `a examiner le contenu d’un fichier `a une r´evision que l’on pr´ecise avec l’option -r :

1 [ 5 3 9 c o d i c i e l 4 : m e i s t e r ] $ svn cat - r 2 c o n f l i t _ a u t o m a t i s e . txt

2 m e i s t e r @ c o d i c i e l 4 ’ s p a s s w o r d :

3 m e i s t e r @ c o d i c i e l 4 ’ s p a s s w o r d :

4 L i g n e c o m m u n e

5 L i g n e a m o d i f i e r par d e l e u t r e : b o n j o u r m e i s t e r

6 L i g n e a m o d i f i e r par m e i s t e r :

7 une a u t r e l i g n e c o m m u n e

Ceci peut permettre par exemple de r´ecup´erer un fichier `a une r´evision donn´ee dans un fichier local afin d’utiliser un outil de comparaison graphique plus pratique que l’aust`ere svn diff:

1 [ 5 4 0 c o d i c i e l 4 : m e i s t e r ] $ svn cat - r 2 c o n f l i t _ a u t o m a t i s e . txt >

c o n f l i t _ a u t o m a t i s e . txt . r2

2 m e i s t e r @ c o d i c i e l 4 ’ s p a s s w o r d :

3 [ 5 4 1 c o d i c i e l 4 : m e i s t e r ] $ ls - l

4 c o n f l i t _ a _ g e r e r . txt

5 c o n f l i t _ a u t o m a t i s e . txt

6 c o n f l i t _ a u t o m a t i s e . txt . r2

5.5 svn revert

La commandesvn revertpermet d’annuler les modifications faites dans un fichier localement et de r´ecup´erer sa version la plus r´ecente dans la base :

1 [ 5 4 4 c o d i c i e l 4 : m e i s t e r ] $ svn s t a t u s

2 M c o n f l i t _ a u t o m a t i s e . txt

3 [ 5 4 5 c o d i c i e l 4 : m e i s t e r ] $ svn r e v e r t c o n f l i t _ a u t o m a t i s e . txt

4 R e v e r t e d ’ c o n f l i t _ a u t o m a t i s e . txt ’

5 [ 5 4 6 c o d i c i e l 4 : m e i s t e r ] $ svn s t a t u s

5.6 svn list

Enfin, la commandesvn listpermet de lister les fichiers d’un d´epˆot. En utilisant l’option -v, on obtient un r´esultat plus d´etaill´e :

1 [ 5 5 0 c o d i c i e l 4 : m e i s t e r ] $ svn l i s t - v

2 m e i s t e r @ c o d i c i e l 4 ’ s p a s s w o r d :

3 5 m e i s t e r 132 Feb 23 1 7 : 5 3 c o n f l i t _ a _ g e r e r . txt

4 3 m e i s t e r 133 Feb 23 1 7 : 1 0 c o n f l i t _ a u t o m a t i s e . txt La premi`ere colonne donne le num´ero de r´evision `a laquelle a eu lieu la derni`ere modification, ensuite on peut lire le nom du d´eveloppeur qui a fait cette modification et ensuite la taille du fichier et la date du d´epˆot dans la base.

6 Conclusion

Nous n’avons vu que les aspects de base de Subversion, mais son utilisation peut se limiter aux commandes que nous avons pr´esent´ees. En revanche pour tout ce qui concerne l’administration d’un d´epˆot, pour la gestion d’un serveur d´edi´e `a Subversion ou pour l’utilisateur d´esient tirer parti de toute la puissance de Subversion, on consultera la documentation (tr`es abordable) disponible sur le site http://subversion.tigris.org/.

La liste des commandes disponibles est donn´ee parsvn help :

1 [ 5 5 3 c o d i c i e l 4 : m e i s t e r ] $ svn h e l p

2 u s a g e : svn < s u b c o m m a n d > [ o p t i o n s ] [ a r g s ]

3 T y p e " svn h e l p < s u b c o m m a n d >" for h e l p on a s p e c i f i c s u b c o m m a n d .

4

5 M o s t s u b c o m m a n d s t a k e f i l e and / or d i r e c t o r y a r g u m e n t s , r e c u r s i n g

6 on the d i r e c t o r i e s . If no a r g u m e n t s are s u p p l i e d to s u c h a

7 command , it w i l l r e c u r s e on the c u r r e n t d i r e c t o r y ( i n c l u s i v e ) by

8 d e f a u l t .

9

10 A v a i l a b l e s u b c o m m a n d s :

11 add

12 b l a m e ( praise , a n n o t a t e , ann )

13 cat

14 c h e c k o u t ( co )

15 c l e a n u p

16 c o m m i t ( ci )

17 c o p y ( cp )

18 d e l e t e ( del , remove , rm )

19 d i f f ( di )

20 e x p o r t

21 h e l p (? , h )

22 i m p o r t

23 i n f o

24 l i s t ( ls )

25 log

26 m e r g e

27 m k d i r

28 m o v e ( mv , rename , ren )

29 p r o p d e l ( pdel , pd )

30 p r o p e d i t ( pedit , pe )

31 p r o p g e t ( pget , pg )

32 p r o p l i s t ( plist , pl )

33 p r o p s e t ( pset , ps )

34 r e s o l v e d

35 r e v e r t

36 s t a t u s ( stat , st )

37 s w i t c h ( sw )

38 u p d a t e ( up )

39

40 S u b v e r s i o n is a t o o l for v e r s i o n c o n t r o l .

41 For a d d i t i o n a l i n f o r m a t i o n , see h t t p :// s u b v e r s i o n . t i g r i s . org / et de l’aide peut ˆetre obtenue sur une option en tapant svn help <commande>:

1 [ 5 5 4 c o d i c i e l 4 : m e i s t e r ] $ svn h e l p l i s t

2 l i s t ( ls ) : L i s t d i r e c t o r y e n t r i e s in the r e p o s i t o r y .

3 u s a g e : l i s t [ T A R G E T . . . ]

4

5 L i s t e a c h T A R G E T f i l e and the c o n t e n t s of e a c h T A R G E T d i r e c t o r y as

6 t h e y e x i s t in the r e p o s i t o r y . If T A R G E T is a w o r k i n g c o p y path , the

7 c o r r e s p o n d i n g r e p o s i t o r y URL w i l l be u s e d .

8

9 The d e f a u l t T A R G E T is ’. ’ , m e a n i n g the r e p o s i t o r y URL of the c u r r e n t

10 w o r k i n g d i r e c t o r y .

11

12 W i t h - - verbose , the f o l l o w i n g f i e l d s s h o w the s t a t u s of the i t e m :

13

14 R e v i s i o n n u m b e r of the l a s t c o m m i t

15 A u t h o r of the l a s t c o m m i t

16 S i z e ( in b y t e s )

17 D a t e and t i m e of the l a s t c o m m i t

18

19 V a l i d o p t i o n s :

20 - r [ - - r e v i s i o n ] arg : ARG ( s o m e c o m m a n d s a l s o t a k e A R G 1 : A R G 2 r a n g e )

21 A r e v i s i o n a r g u m e n t can be one of :

22 N U M B E R r e v i s i o n n u m b e r

23 "{" D A T E "}" r e v i s i o n at s t a r t of

the d a t e

24 " H E A D " l a t e s t in r e p o s i t o r y

25 " B A S E " b a s e rev of item ’ s

w o r k i n g c o p y

26 " C O M M I T T E D " l a s t c o m m i t at or

b e f o r e B A S E

27 " P R E V " r e v i s i o n j u s t b e f o r e

C O M M I T T E D

28 - v [ - - v e r b o s e ] : p r i n t e x t r a i n f o r m a t i o n

29 - R [ - - r e c u r s i v e ] : d e s c e n d r e c u r s i v e l y

30 - - u s e r n a m e arg : s p e c i f y a u s e r n a m e ARG

31 - - p a s s w o r d arg : s p e c i f y a p a s s w o r d ARG

32 - - no - auth - c a c h e : do not c a c h e a u t h e n t i c a t i o n t o k e n s

33 - - non - i n t e r a c t i v e : do no i n t e r a c t i v e p r o m p t i n g

34 - - config - dir arg : r e a d u s e r c o n f i g u r a t i o n f i l e s f r o m d i r e c t o r y ARG

Enfin, nous donnons ici un tableau r´ecapitulatif des diff´erentes commandes les plus courantes : svnadmin create cr´eer une base

svn checkout r´ecup´erer le contenu de la base svn commit soumettre des modifications `a la base svn import importer un projet dans la base svn resolved indiquer que les conflits ont ´et´e r´esolus svn revert annuler toute modification locale svn update mettre `a jour le r´epertoire local svn cat lire le contenu d’un fichier de la base

svn diff regarder les diff´erences entre des versions de la base svn info obtenir des infos sur le r´eperoire local

svn list lister le contenu de la base

svn log voir les messages accompagnant chaque r´evision de la base svn status afficher l’´etat des fichiers/dossiers du r´epertoire local svn add ajouter un fichier/dossier dans l’arborescence de la base svn copy copier des fichiers/dossiers dans l’arborescence de la base svn delete supprimer des fichiers/dossiers de l’arborescence de la base svn mkdir cr´eer un dossier dans l’arborescence de la base

svn move d´eplacer des fichiers/dossiers dans l’arborescence de la base

Tab. 1 – Liste des commandes usuelles de Subversion class´ees par genre.

Documents relatifs