J'ai une configuration de déploiement plutôt compliquée pour notre site Drupal qui est une combinaison de CVS et SVN. Nous utilisons CVS pour obtenir les dernières versions de modules, et nous déployons avec SVN. Malheureusement, lorsque les mises à jour de CVS suppriment des fichiers, Subversions se plaint parce qu'elles n'ont pas été supprimées dans SVN. J'essaie de faire des scripts shell et Perl pour exécuter une commande svn rm
sur tous ces fichiers qui ont déjà été supprimés du système de fichiers, mais je ne suis pas allé loin. Ce que j'ai à ce jour est le suivant:Sortie de shell de tuyau à svn del commande?
svn st | grep !
Ceci produit une liste de tous les fichiers supprimés du système de fichiers comme ceci:
! panels_views/panels_views.info
! panels_views/panels_views.admin.inc
! contexts/term.inc
! contexts/vocabulary.inc
! contexts/terms.inc
! contexts/node_edit_form.inc
! contexts/user.inc
! contexts/node_add_form.inc
! contexts/node.inc
etc. . .
Cependant, je veux courir en quelque sorte un svn del
sur chacun de ces lignes. Comment puis-je obtenir cette sortie dans mon script Perl, ou comment puis-je exécuter svn del
sur chacune de ces lignes?
Edit: La commande exacte je, avec l'aide de tous, était
svn st | grep ^! | cut -c 9- | xargs svn del
Je remplacerais 'grep!' Par 'grep ^!' Pour éviter de tuer accidentellement des fichiers contenant des points d'exclamation dans leur chemin. –
C'est une bonne idée. –
Merveilleux, je n'avais aucune idée sur cut ou xargs. Je savais que Perl n'était pas le moyen le plus simple, mais j'ai un peu de familiarité avec. – jergason