Mémorandum Subversion
Création du repository
Pour créer un nouveau projet dans un repository existant, avec comme structure :
|
|- /
|
|- mon-appli/
|
|- trunk/
|- branches/
|- tags/
C'est l'arborescence typique d'un repository Subversion. S'il n'y a qu'une seule application dedans, les répertoires trunk/, branches/ et tags/ sont à la racine, soit :
| |- / | |- trunk/ |- branches/ |- tags/
Le path vers le repository est donc de la forme : http://www.example.com/repository/mon-appli. La partie avant "mon-appli" est variable, et dépend du serveur (ce peut être un "serveur" local, donc avec une URL en file:///, ou bien un serveur WebDAV - HTTP, quoi -, avec une URL en http://, ou bien https:// si la connexion est encryptée en SSL). Voir avec le "fournisseur" du repository pour l'URL exacte.
On crée donc l'arborescence en local, mais pas son contenu. Le plus simple est de se placer dans un dossier vide, dont le nom et la position importe peu, qui représente la racine du repository. On a donc (dans le cas de la première arborescence présentée) :
|
|- /home/moi/
|
|- mon-appli/
|
|- trunk/
|- branches/
|- tags/
Dans le répertoire /home/moi/, on tape :
svn import . http://www.example.org/repository
NB: le . représente le répertoire local (comme d'hab', quoi).
Et voilà ! On efface ensuite l'arborescence (voilà pourquoi il ne fallait pas y mettre de fichiers
), et on "check out" une "working copy" toute neuve là où on veut bosser dessus. Il est plus pratique de ne récupérer que le trunk/ (les autres répertoires servent rarement, et on peut de toutes façons "travailler" dessus comme on en a besoin par leurs seules URL).
Accès au repository — URL
Pour faire un "check out" d'une "working copy" (récupération d'une copie de travail) :
svn checkout http://www.example.org/repository/mon-appli/trunk
Ensuite, si on a des répertoires dans son arborescence de projet (dans le trunk/, par exemple) :
| |- trunk/ | |- tata/ |- toto/ |- tutu.txt
On peut accéder à n'importe lequel de ces répertoires (et en obtenir une "working copy" - copie de travail) par l'URL (pour l'exemple de toto/) :
svn checkout http://www.example.org/repository/mon-appli/trunk/toto
Modifications sur les fichiers en local
Pour modifier le contenu d'un fichier : utiliser son éditeur de texte / graphique / nawak préféré.
Pour ajouter un fichier au repository (après l'avoir créé) :
svn add fichier
Pour supprimer un fichier (avant de le supprimer physiquement - en fait à la place, puisque Subversion s'en charge) :
svn delete fichier
Pour déplacer un fichier (mêmes conditions que pour supprimer) :
svn move depuis vers
Pour copier un fichier (mêmes conditions) :
svn copy depuis vers
Qu'est-ce que j'ai fait ?!
Pour savoir quelles modifications on a apportées à la "working copy" (avant de faire un commit) :
svn status
Cette commande renvoie une liste des fichiers modifiés dans le répertoire courant (ou dans le dossier spécifié à sa suite, ou bien encore un seul fichier si c'est le path d'un fichier qui a été donné), préfixés de signes plus ou moins cabalistiques :
A: à ajouter au repository.C: en conflit (changement en local + changements en même temps sur le repository).D: à supprimer du repository.M: élément modifié.?: élément non géré par Subversion.!: élément absent (suppression d'un fichier sanssvn delete, par exemple).I: élément ignoré par Subversion.
Pour faire un "diff" (format standardisé pour visualiser les changements ligne à ligne entre deux fichiers texte) :
svn diff svn diff fichier svn diff --revision 1:2 fichier
Dans l'ordre :
- Diff sur tout le répertoire.
- Diff sur le seul
fichier(on peut aussi spécifier un répertoire à la place). - Diff sur le seul
fichierpour les révisions 1 et 2.
Pour annuler des changements, et revenir à la version du repository :
svn revert
On peut également passer un fichier ou un répertoire ou un numéro de version.
Mise à jour de la working copy
svn update
Attention ! svn update est différent de cvs update. La version CVS de la commande permet de voir quels sont les changements qui ont été apportés à la "working copy". Dans le monde de SVN, il faut utiliser svn status pour ça. svn update met à jour votre version locale par rapport au repository distant !

Commentaires
1. Le lundi 21 novembre 2005 à 17:29, par revenus
2. Le vendredi 17 août 2007 à 16:11, par PrelKikam
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.