7
votes

Sortie de la coque de tuyau à la commande SVN del?

J'ai une configuration de déploiement assez compliquée pour notre site Drupal qui est une combinaison de CV et de SVN. Nous utilisons des CV pour obtenir les dernières versions des modules et nous déployons avec SVN. Malheureusement, lorsque CVS met à jour les fichiers, les subversions se plaint car ils n'étaient pas supprimés dans SVN. J'essaie de faire des scripts shell et de Perl pour exécuter une commande svn rm code> sur tous ces fichiers qui ont déjà été supprimés du système de fichiers, mais je n'ai pas obtenu de loin. Ce que j'ai jusqu'à présent, c'est ceci:

svn st | grep ^! | cut -c 9- | xargs svn del


0 commentaires

3 Réponses :


10
votes

essayez d'utiliser xargs , comme celui-ci: xxx

la commande xargs prend des lignes sur son entrée standard et les transforme et Utilise ces lignes comme paramètres de ligne de commande sur le svn rm . Par défaut, xargs utilise plusieurs lignes avec chaque invocation de sa commande, qui, dans le cas de SVM RM , c'est bien.

Vous devrez également avoir à Expérimentez la commande couper pour l'obtenir juste juste. Par défaut, couper utilise un onglet sous forme de délimiteur et de subversion peut produire des espaces là-bas. Dans ce cas, vous devrez peut-être utiliser Cut -D '' -F6 ou quelque chose.

Comme toujours lorsque vous construisez un tel pipeline de commande, exécutez des portions à la fois pour vous assurer que Les choses ont l'air bien. Donc, exécutez tout jusqu'à la commande Cut pour vous assurer que vous avez la liste des noms de fichiers que vous attendez, avant l'exécuter à nouveau avec "| xargs svn rm" < / code> à la fin.


2 commentaires

Je changerais grep! à grep ^! Pour vous assurer que nous ne tuerions pas accidentellement de fichiers qui ont des points d'exclamation sur leur chemin.


Merveilleux, je n'avais aucune idée de couper ou de Xargs. Je savais que Perl n'était pas le moyen le plus simple, mais j'ai un peu de familiarité.



1
votes
svn st | egrep ^! | cut -b 9- | xargs svn del

0 commentaires

0
votes

Tout comme une alternative à ceux ci-dessus, j'utiliserais quelque chose comme: xxx

Je trouve très pratique la langue de correspondance de modèle AWK pour des tâches comme celle-ci.


0 commentaires