- par balbinus, le samedi 30 avril 2005 à 01:16 dans « Programmation »
Version courte du mémorandum.
Structure du repository
/
/branches/
/tags/
/trunk/
branches
= versions en développement.
tags
= versions gelées (= releases).
trunk
= branche principale de développement.
Opérations sur les fichiers
Ajouter un/des fichiers/répertoires.
svn add nouveau
Copier un fichier/répertoire.
svn copy depuis vers
Supprimer un/des fichiers/répertoires.
svn delete vieux
Déplacer un fichier/répertoire.
svn move depuis vers
Opérations sur le dépôt
Récupérer une version de travail.
svn checkout url
Import initial.
svn import dossier
Créer un dossier.
svn mkdir dossier
Mise à jour de la version locale par rapport au dépôt.
svn update
Opérations sur les changements
Envoyer un ensemble de changements au dépôt.
svn commit
"Diff" entre deux fichiers ou deux révisions d'un fichier.
svn diff
Liste des changements (historique).
svn log
Fusion des changements entre deux versions, deux branches...
svn merge
Signaler la résolution d'un conflit.
svn resolved
Annuler les modifications sur un fichier/répertoire de la copie locale.
svn revert
Liste des changements entre la version locale et le dépôt.
svn status
- par balbinus, le vendredi 29 avril 2005 à 17:55 dans « Programmation »
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 sans svn 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
fichier
pour 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 !
- par balbinus, le lundi 18 avril 2005 à 12:52 dans « Me on the Web »
Je me suis amusé hier à faire du WarDriving entre chez moi et Saint-Vallier (Ardèche). Voici les résultats.
On peut noter :
- le nombre important de nodes WiFi rencontrés en à peine 3 heures de temps et par autoroute principalement.
- que Wanadoo couvre un certain nombre de grandes villes.
- qu'il y a un nombre important de réseaux non-cryptés.
- que Windows XP SP2 suxxe pour faire du WarDriving. Surtout le SP2.