Comment faire le ménage sous Subversion

Vous avez besoin de faire du ménage dans votre projet géré sous Subversion ? Si vous avez quelques fichiers à supprimer, la commande à passer est simple :

$ svn rm admin/images/graphs/THUMB~JT.DBE
D         admin/images/graphs/THUMB~JT.DBE

C’est fastidieux au-delà de quelques fichiers. Dans ce cas détruisez les fichiers par la méthode qui vous convient (par exemple une synchronisation avec BeyondCompare). Ensuite, un svn status vous donnera l’état des lieux.

$ svn st
D       admin/images/graphs/THUMB~JT.DBE
!       admin/images/graphs/Thumbs.db
!       admin/images/graphs/dummy
!       admin/images/graphs/.cvsignore
M       images/ramey-noir.jpg

Les fichiers manquants sont marqués par un bang (un point d’exclamation, en hacker). Le fichier que nous avons déjà détruit est signalé par un D, les fichiers modifiés par un M. Nous allons filtrer les lignes qui commencent par ! (^! pour grep) et récupérer le nom de fichier, qui est le deuxième élément de la ligne ($2 pour awk).

$ svn st|grep '^!'|awk '{print $2}'
admin/images/graphs/Thumbs.db
admin/images/graphs/dummy
admin/images/graphs/.cvsignore

Plutôt que de les regarder, nous allons les supprimer du repository.

$ svn st|grep '^!'|awk '{print $2}'|xargs svn rm
D         admin/images/graphs/Thumbs.db
D         admin/images/graphs/dummy
D         admin/images/graphs/.cvsignore

Finalement, on commite le tout :

$ svn ci -m"Ménage fait !"

Et hop !