Nettoyer sa copie de travail

Tagged:  

Parfois avant de commiter du code sur un depot subversion, je me retrouve avec des fichiers temporaires. Pour les supprimer rapidement, j'utilise cette commande :

for I in $(svn status|awk '$1 == "?" { print $2 }'); do rm -rf $I; done

C'est assez bourrin, et ça ne pardonne pas si on a oublier de versioner un fichier :D

C'est vrai que c'est plus élégant, je pense pas toujours à xargs :)

Toi aussi, pourris ton filesystem :

svn status | awk '$1 == "?" { print $2 }' | xargs rm -rf

Avantage : rm n'est exécuté qu'une seule fois, avec en paramètre tous les fichiers.

Par curiosité, j'ai tenté en python :

svn status | python -c 'import sys,os;(os.unlink(l.split()[1]) for l in sys.stdin.readlines() if l.split()[0]=="?")'

Quoi ? Qu'entends-je ? ... Oui, je confirme, c'est tout moche....

laisse parler ces boeufs qui font du for i in awk !

Ce code Perl est parfaitement lisible.

Ne pas confondre "deviner" ce que fait un code sans connaître le langage",
et "pouvoir le lire sans effort particulier en en connaissant les bases".

Les options -lane sont méga courantes.

$F[x] comme nom de champ, c'est pas super compliqué

unlink est suffisamment explicite pour comprendre que ça "défait des choses" et un sysadmin normalement constitué ira donc se renseigner avant de l'utiliser...

Pour moi, les bases de Perl sont aussi lisibles voir moins bariolées que du bash | sed | awk | grep.

ni C ni les coreutils !!!

pour info, c'est l'appel systeme unlink. ce script perl est donc lisible pour toute personne ayant fait un peu de C. C'etait souvent le cas il y a 15 ans. De nos jours, un del ou un system.io.jesaispasquoi.fs.fichier.new('x').remove.delete. serait mieux toléré.

De toutes les solutions proposées, c'est la moins lisible et comme par hasard, ça tombes sur Perl.

Le unlink faut connaitre, quelqu'un ne connaissant pas perl, lirait "je supprime le lien" :)

Mon attirance personnelle pour Perl m'amène à proposer cette solution :

svn status | perl -lane '$F[0] eq "?" && unlink $F[1]'

Poster un nouveau commentaire

Le contenu de ce champ ne sera pas montré publiquement.
  • You can use BBCode tags in the text.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".

Plus d'informations sur les options de formatage