Ich habe eine ziemlich komplizierte Bereitstellung für unsere Drupal-Site, die eine Kombination aus CVS und SVN ist. Wir verwenden CVS, um die neuesten Versionen von Modulen zu erhalten, und wir implementieren mit SVN. Leider, wenn CVS Updates Dateien zu entfernen, beschwert sich Subversionen, weil sie nicht in SVN entfernt wurden. Ich versuche etwas Shell-Skripting und Perl zu machen, um einen svn rm
Befehl auf all diesen Dateien auszuführen, die bereits aus dem Dateisystem gelöscht wurden, aber ich bin nicht weit gekommen. Was ich bisher habe, ist dies:Pipe Shell-Ausgabe zu Svn del Befehl?
svn st | grep !
Dies gibt eine Liste aller Dateien aus dem Dateisystem gelöscht wie folgt:
! 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. . .
Allerdings möchte ich irgendwie eine svn del
auf jedem von diesen laufen Linien. Wie kann ich diese Ausgabe in mein Perl-Skript bekommen, oder alternativ, wie kann ich svn del
auf jeder dieser Zeilen ausführen?
Edit: Der genaue Befehl, den ich verwendet, mit etwas Hilfe von allem war
svn st | grep ^! | cut -c 9- | xargs svn del
Ich würde 'grep!' In 'grep ^!' Ändern, um sicherzustellen, dass wir nicht versehentlich Dateien mit Ausrufezeichen in ihrem Pfad löschen. –
Das ist eine kluge Idee. –
Wunderbar, ich hatte keine Ahnung von Schnitt oder Xargs. Ich wusste, dass Perl nicht der einfachste Weg war, aber ich kenne mich ein wenig aus. – jergason