Même si elles ne sont pas utilisées aussi fréquemment que les commandes évoquées précédemment dans ce chapitre, vous aurez occasionnellement besoin de connaitre ces commandes.
Lorsque Subversion modifie votre copie de travail (ou
toute information dans .svn), il essaie
de le faire de manière aussi sûre que possible. Avant de modifier
votre copie de travail, Subversion écrit ses intentions dans un fichier
journal. Ensuite il exécute les commandes contenues dans le fichier
journal pour appliquer la modification demandée.
Enfin, Subversion supprime le fichier journal. Architecturalement, cette
méthode est comparable à celle utilisée par un système de fichiers
journalisé. Si une opération de Subversion est interrompu (si le
processus est tué ou si la machine “plante”
par exemple), les fichiers journaux restent sur le disque. En
ré-exécutant les fichiers journaux, Subversion peut terminer l'opération
commancée plus tôt et votre copie de travail peut ainsi retrouver
d'elle-même un état cohérent.
Et c'est exactement ce que fait svn cleanup :
elle recherche les fichiers journaux encore présents dans votre copie
de travail et les exécute, supprimant les verrous résiduels du
processus. Si jamais Subversion vous signale qu'une partie de votre
copie de travail est verrouillée “locked”, c'est alors
la commande que vous devriez exécuter. De plus, svn
status affichera un L pour indiquer
les éléments verrouillés :
$ svn status L somedir M somedir/foo.c $ svn cleanup $ svn status M somedir/foo.c
La commande svn import est un moyen rapide de copier une arborescence non versionnée de fichiers dans le dépôt, en créant les répertoires intermédiaires si nécessaire.
$ svnadmin create /usr/local/svn/nouveaudepot
$ svn import mon_arborescence file:///usr/local/svn/nouveaudepot/un/projet \
-m "Import initial"
Adding mon_arborescence/foo.c
Adding mon_arborescence/bar.c
Adding mon_arborescence/sousrep
Adding mon_arborescence/sousrep/quux.h
Committed revision 1.
Dans cet exemple, nous copions le contenu du répertoire
monarborescence dans le répertoire
un/projet du dépôt :
$ svn list file:///usr/local/svn/newrepos/some/project bar.c foo.c subdir/
Notez qu'une fois l'import effectué, l'arborescence originale n'est pas convertie en copie de travail. Pour commencer à travailler, il est toujours nécessaire d'extraire ( svn checkout) une nouvelle copie de travail pour cette arborescence.