Wenn ich eine Arbeitskopie eines Subversion-Repositorys habe, gibt es eine Möglichkeit, alle nicht versionierten oder ignorierten Dateien in dieser Arbeitskopie mit einem einzigen Befehl oder Tool zu löschen? Im Wesentlichen suche ich das SVN-Analogon zu git clean
.
Entweder eine Befehlszeile oder eine GUI-Lösung (für TortoiseSVN) wäre akzeptabel.
svn
tortoisesvn
ignore
Nick Meyer
quelle
quelle
Antworten:
Verwenden von TortoiseSVN:
quelle
svn cleanup --remove-unversioned --remove-ignored .
Dies hat die folgenden Funktionen:
--xml
Option zu verwenden und die resultierende XML-Ausgabe zu analysieren).svn status
andere Statuszeichen vor dem Dateinamen gedruckt werden (was nicht der Fall sein sollte, da die Dateien nicht verfolgt werden, sondern nur für den Fall ...).Ich verwende ein Shell-Skript mit dem Namen
svnclean
, das Folgendes enthält:quelle
IFS
zurückkehren, was es vorher war. Wenn Sie das tunVARNAME=value command
, die Zuordnungvalue
zuVARNAME
gilt nur während der Ausführungcommand
(mit einigen Ausnahmen , die gelten nicht fürread
). Weitere Informationen finden Sie in der POSIX-Spezifikation und in diesem POSIX-Fehlerbericht .Ich weiß, dass dies alt ist, aber falls jemand anderes darauf stößt, neuere Versionen (1.9 oder höher) der SVN-Unterstützung
--remove-unversioned
, zsvn cleanup . --remove-unversioned
.https://subversion.apache.org/docs/release-notes/1.9.html#svn-cleanup-options
quelle
svn cleanup . --remove-ignored
Dieser Oneliner könnte Ihnen helfen:
Vorsichtig verwenden!
quelle
svn status --no-ignore
, um die ignorierten Dateien gut zu erfassen.Ändern der Antworten von Yanal-Yves Fargialla und gimpf mithilfe von Powershell (darf jedoch den ursprünglichen Beitrag von Stackoverflow nicht kommentieren):
Dies fügt das Karat ("^") hinzu, um den Zeilenanfang anzugeben, wodurch vermieden wird, dass alle Dateien übereinstimmen, die den Buchstaben "i" enthalten. Fügen Sie außerdem die Flags für -recurse und -force zu rm hinzu, um diesen Befehl nicht interaktiv und somit in einem Skript verwendbar zu machen.
quelle
Viele Dinge in SVN können auf unterschiedliche Weise ausgeführt werden, wie die hier angegebenen unterschiedlichen Befehlszeilenantworten belegen. Mit dem Aufkommen von Version 1.7 gibt es für TortoiseSVN eine weitere Technik, die tatsächlich eine feinere Kornauflösung bietet als Stefans Antwort, sodass Sie nicht versionierte Dateien getrennt von ignorierten Dateien auswählen können. Wählen Sie einfach,
TortoiseSvn >> Clean up...
um diesen Dialog zu öffnen.quelle
Mit Powershell:
Über die Befehlszeile:
quelle
-match '[\?i]' -replace '^.{8}'
stattdessen zu verwenden, was auch dann richtig funktioniert, wenn ein Dateiname mit einem Leerzeichen beginnt und auch die ignorierten Dateien löscht.code
@ (svn status --no-ignore) -match '[\? I]' -replace '^. {8}' | rm `. Ich habe es mit Hilfe dieses Beitrags herausgefundenpowershell -Command "&{(svn status --no-ignore) -match '[\?i]' -replace '^.{8}' | remove-item -force -recurse}"
Dieser Oneliner funktioniert für mich (basierend auf Richard Hansens Antwort, die überraschenderweise bei Dateien mit Leerzeichen nicht funktioniert hat):
quelle
-fr
den folgendenrm
Befehl hinzu: svn status --no-ignore | grep '^ [I?]' | Schnitt -c 9- | xargs -d "\ n" -I {} rm -fr {}Verwenden von TortoiseSVN:
Keine wirklich schöne und saubere Lösung, aber der schnellste Weg, den ich kenne (unter Windows).
Danke an pkh für den Tipp mit den ignorierten Dateien.
quelle
Dies ähnelt anderen Antworten, wird jedoch tatsächlich ignoriert (beachten Sie das 'I' in den REs):
quelle
Jemand sagte, Sie können dies nicht über die Windows-Befehlszeile tun.
Stier.
Funktioniert in einer Zeile und erfordert kein einziges GNU-Tool. :) :)
quelle
for /f "tokens=2 delims= " %%I IN ('svn st --no-ignore ^| findstr /R "^[I?]"') DO (DEL /S /F /Q /A:H "%%I" & rmdir /S /Q "%%I")
%%
über%
Sie können sie nicht nur mit der SVN-Befehlszeile löschen (bei GUI-Tools sind Sie sich jedoch nicht sicher). Wenn Sie sich unter einem Linux-System befinden, kann dies hilfreich sein:
http://www.guyrutenberg.com/2008/01/18/delete-unversioned-files-under-svn/
Die andere (brutale) Methode besteht darin, Änderungen festzuschreiben, alle aus dem Ordner zu löschen und erneut auszuchecken.
quelle