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
3 Réponses :
essayez d'utiliser la commande Vous devrez également avoir à Expérimentez la commande 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 code> Cut code> pour vous assurer que vous avez la liste des noms de fichiers que vous attendez, avant em> l'exécuter à nouveau avec xargs code>, comme celui-ci:
xargs code> 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 code>. Par défaut,
xargs code> utilise plusieurs lignes avec chaque invocation de sa commande, qui, dans le cas de
SVM RM code>, c'est bien. P>
couper code> pour l'obtenir juste juste. Par défaut,
couper code> 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 code> ou quelque chose. P>
"| xargs svn rm" < / code> à la fin. P> p>
Je changerais grep! Code> à
grep ^! Code> 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é.
svn st | egrep ^! | cut -b 9- | xargs svn del
Tout comme une alternative à ceux ci-dessus, j'utiliserais quelque chose comme: Je trouve très pratique la langue de correspondance de modèle AWK pour des tâches comme celle-ci. P> p>