WikiStart: commandes_svn.txt

File commandes_svn.txt, 6.6 KB (added by s8leyaou, 9 years ago)
Line 
1************************** Utilisation de svn **************************
2-------------------
3Récupérer un projet
4-------------------
5
6        svn checkout https://[user@]svn.cervval.com/nom_du_projet/ [dest_locale]
7
8--------------------------------------
9Récupérer les modifications des autres
10--------------------------------------
11
12        svn up [$fichiers$]
13
14Met à jour votre copie locale, en prenant en compte les derniÚres versions des fichiers spécifiés. Si aucun fichier n'est spécifié, le programme mettra à jour tout le répertoire et ce récursivement. En cas de modification conflictuelle entre celle du serveur et celle de la copie locale, il faut résoudre les conflits.
15
16Lors de l'update, une liste de noms de fichier s'affiche précédés par une lettre. Ces fichiers sont les fichiers affectés par l'update, et chaque lettre a une signification particuliÚre, indiquant l'effet de la commande sur la version locale :
17
18    * A : Le fichier a été ajouté à la version local
19    * M : Le fichier est localement modifié (le contenu n'est pas touché par SVN)
20    * U : Le fichier est mis à jour
21    * G : Le fichier est patché (le fichier est modifié à la fois localement et sur la SVN et les modifications de la SVN sont fusionnées à la copie locale).
22    * C : La copie locale du fichier entre en conflit avec la version du serveur.
23    * I : Le fichier est ignoré
24    * D : Le fichier est supprimé
25    *  ! : Le fichier est manquant
26    *  ? : Le fichier n'est pas géré par SVN
27
28-------------------------
29Valider ses modifications
30-------------------------
31
32        svn status [$fichiers$]
33
34Indique l'état de la version locale (ou d'un fichier précis de la version locale). Cela indique avec la même syntaxe que ci-dessus les fichiers qui ont étés localement modifiés par rapport à la derniÚre opération de 'synchronisation' avec le serveur. Cette opération étant locale, elle n'indique les modifications que par rapport à la révision actuelle. Il faut faire
35
36        svn status -u [$fichiers$]
37
38Pour avoir les modifications par rapport à la derniÚre révision de la branche (c'est utile avant de faire un svn up, pour prendre ses précautions).
39
40        svn ci [$fichiers$]
41
42Cette commande envoie au serveur les fichiers modifiés. Si aucun conflit n'est détecté la modification est validée.
43
44Il faut toujours updater la copie locale avant de commiter ses modifications, et s'assurer donc que les modifications intervenues entre temps sont compatibles
45
46Avant d'envoyer le commit, SVN vous demandera un message expliquant le travail effectué. Ce message est suivi de la liste des fichiers avec les tags comme expliqué dans la section précédente. Dans le pire des cas, l'utilisation de la commande diff permet de voir l'ensemble des modifications :
47
48        svn diff [$fichiers$]
49
50---------------------
51Résoudre les conflits
52---------------------
53
54AprÚs un update il est possible que certaines modifications locales soit en conflit avec les modifications des autres développeurs (dans le cas en particuliers ou une même ligne a été modifiée). Il faut alors faire une fusion à la main, c'est la résolution du confit.
55
56Pour ceci il faut éditer le fichier concerné. Les points conflictuels sont facilement identifiables car délimités par :
57
58        <<<<<<< .mine
59        ... ma version du code
60        =======
61        ... la version SVN du code
62        >>>>>>>.r849
63
64Il suffit alors de choisir quelles modifications doivent être conservées... et d'enregistrer le fichier. Il ne faut tout de même pas oublier de marquer le conflit comme résolu :
65
66        svn resolved $fichier$
67
68-------------------------
69Annuler ses modifications
70-------------------------
71
72        svn revert [$fichiers$]
73
74Supprime toutes les modifications locales apportées au fichier spécifié depuis le derniÚre update.
75Cette commande est la seule qui ne soit pas récursive avec SVN. Pour utiliser la commande sur un répertoire de façon récursive, il faut ajouter l'option -R
76
77        svn revert -R [$répertoire$]
78
79-----------------------------------------
80Reverter des modifications déjà commitées
81-----------------------------------------
82
83Il suffit d'appliquer un patch inverse correspondant aux modifications que l'on souhaite annuler.
84
85        svn merge --commit -num_rev [$répertoire$]
86
87ce qui indique à subversion qu'il faut appliquer à la version locale courante les changements opposés au commit num_rev. Il faut ensuite commiter ces changements.
88
89-----------------------------
90Ajouter un fichier/répertoire
91-----------------------------
92
93        svn add $fichiers$
94        svn mkdir $repertoire$
95
96Ajoute les fichiers spécifiés à la SVN. Les répertoires sont ajoutés immédiatement, les fichiers ajoutés par contre doivent être comités pour valider l'ajout. L'utilisation de mkdir nécessite que le répertoire n'existe pas encore. Il n'est donc pas suffisant de créer un répertoire ou un fichier dans l'arbre de la svn pour qu'il soit ultérieurement pris en compte par subversion.
97
98-------------------------------
99Supprimer un fichier/répertoire
100-------------------------------
101
102        svn remove $fichiers$
103        svn rmdir $repertoire$
104
105Supprime un fichier du module. La version locale est immédiatement effacée. La suppression sera effective aprÚs un commit (et il est toujours possible avec un 'merge' de revenir en arriÚre).
106
107------------------------------
108Déplacer un fichier/répertoire
109------------------------------
110
111        svn move $fichier$ $destination$
112
113Déplace le fichier ou répertoire vers sa destination. Se comporte comme mv.
114
115-------------------------
116Créer une version tagguée
117-------------------------
118
119Une version tagguée est un snapshot du projet, une photographie à un instant présent. Sur svn, un snapshot est donc une copie de l'instant présent dans l'arborescence. Le plus souvent on utilise un répertoire tag :
120
121        svn copy trunk tags/$montag$
122
123-----------------
124Créer une branche
125-----------------
126
127De la même maniÚre que les tags, les branches sont une séparation du projet. C'est donc également une copie, mais celle-ci destinée à évoluer... On stock habituellement les branches dans un répertoire branches :
128
129        svn copy trunk branches/$mabranche$
130
131----------
132Backporter
133----------
134
135Backporter consiste à transposer les modifications d'une branche sur une autre.
136
137        svn merge -r vInitiale:vCible $brancheorigine$ [$branchedest$]
138        svn ci
139
140Cette syntaxe applique les modifications de la branche $brancheorigine$ effectuées de la révision vInitiale à la révision vCible (dans cet ordre là, même si vInitiale>vCible ) la branche branchedest. Si branchedest n'est pas spécifié, l'application sera réalisée sur le répertoire courant.
141
142Attention à mettre vInitiale et vCible dans le bon sens, sinon on supprime les modifications au lieu de les appliquer.
143
144