D'Autres Commandes Utiles

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.

svn cleanup

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

svn import

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.