Eh oui, la grande mode est à git, mais nous sommes encore nombreux à (être obligés d')utiliser subversion, au travail par exemple. C'est mon cas. Comme j'ai une toute petite tête et que je préfère utiliser mes outils en ligne de commande, je note régulièrement les petites astuces avec svn. En voici certaines :

Checkout à une date donnée

svn checkout --revision {2002-02-17} url

Merge d'un commit depuis une branche

Pourn réaliser cela, il faut disposer :

  • du ou des numéros de commit (avec svn log)
  • de l'url de la branche d'origine où le commit a été réalisé (svn info)
  • ... de patience car les merge sont souvent un parcours semé d'embûches sous svn

Par exemple, pour merger le commit 1000.

cd ~/destination/du/merge
svn merge -r999:1000 http://url/de/la/branche/ .

Pour un seul commit, on peut préférer l'option -c (comme change) :

svn merge -c1000 http://url/de/la/branche/ .

Pour plusieurs commit, c'est presque pareil. Ainsi, pour le merge du commit 1000 à 1010 :

svn merge -r999:1010 http://url/de/la/branche/ .

Revert d'un commit

C'est un merge inversé. Pour cela, il faut disposer du numéro de commit (svn log).

Par exemple, pour faire un revert du commit numéro 12 :

 svn merge -r12:11 .

SVN nous informe qu'il s'agit d'une fusion inverse :

--- Fusion inverse de r12 dans '.' :
M   chemin/fichier/modifie/fichier.txt

Il ne vous reste plus qu'à vérifier ce qui change (svn status) et de le commiter.

Find en évitant les .svn

find . -name "pattern" -not -path "*svn" -exec maCommande {} \;

Sinon, il y a ack qui est bien meilleur de grep. Il évite tout seul les .svn et autres fichiers embêtants.


Et vous, quelles sont vos astuces svn ?