Befehl zum rekursiven Entfernen aller .svn-Verzeichnisse unter Windows


75

Ich habe ein Verzeichnis mit vielen Unterverzeichnissen. In jedem Ordner befindet sich ein Subversion-Ordner (.svn).

Gibt es in Windows einen Befehl, der jeden Ordner und jedes Unterverzeichnis durchläuft und den .svn-Ordner löscht?

Oder muss ich ein Skript erstellen oder manuell ausführen?


4
Wenn es kein Skript sein muss, würde ich einfach im Stammordner nach ".svn" suchen, dann alle Ergebnisse auswählen und löschen.
JB Nizet

1
Möglicherweise interessiert Sie auch der Befehl svn export ( svnbook.red-bean.com/de/1.0/re10.html ), mit dem ein Verzeichnis an einen anderen Speicherort kopiert wird, jedoch ohne alle .svn-Verzeichnisse.
JB Nizet

@JB Nizet: Sie sollten eine Antwort erstellen, damit die Leute abstimmen können, anstatt Kommentare hinzuzufügen. Kommentare dienen zum Kommentieren der Frage, z. B. wenn etwas unklar ist
Sander Rijken

Mögliches Duplikat von [Entfernen von .svn-Dateien aus allen Verzeichnissen] ( stackoverflow.com/questions/1301203/… )
Sander Rijken

1
@ user538442 Bitte erwägen Sie, Ihre akzeptierte Antwort zu ändern
Brian Webster

Antworten:


30

Verwenden Sie den svn exportBefehl, um eine Subversion-Arbeitskopie in eine neue "saubere" Verzeichnisstruktur zu exportieren, die nicht über die .svnVerzeichnisse verfügt.


5
Dies ist möglicherweise nicht das, wonach er sucht. Ich wollte dasselbe, damit ich bereits geänderten Code an einem anderen SVN-Speicherort einchecken konnte.
Bobby Cannon

Sie können das nach einemsvn export
Sander Rijken

3
Dieser Befehl übernimmt nicht die vorhandenen Dateien von Ihrer Festplatte, sondern erstellt eine Kopie der aktuellsten Version in Ihrem Repository. Sie hätten verwenden sollensvn export WCPath NewPath
Sander Rijken

4
'svn export' funktioniert gut, wenn Sie Zugriff auf das ursprüngliche Repository haben. Manchmal erhalte ich Code-Dumps, die .svn-Verzeichnisse enthalten, die auf Repositorys verweisen, auf die ich nicht zugreifen kann. In diesem Fall ist eine der Batch-Datei- oder Powershell-Antworten der richtige Weg.
Kevin

8
Dies beantwortet nicht die eigentliche Frage. ZB habe ich einen Ordnerbaum erhalten, benutze aber keine SVN. Der Befehl "export" steht mir also nicht zur Verfügung.
Rid Iculous

174

Erstellen Sie eine kleine Batchdatei mit der folgenden Zeile und führen Sie sie aus dem übergeordneten Ordner aus, unter dem sich .svn-Verzeichnisse befinden.

FOR /F "tokens=*" %%G IN ('DIR /B /AD /S *.svn*') DO RMDIR /S /Q "%%G"

Sie können die folgende Zeile auch direkt an der Eingabeaufforderung eingeben:

FOR /F "tokens=*" %G IN ('DIR /B /AD /S *.svn*') DO RMDIR /S /Q "%G"

1
Danke vielmals. das ist was ich genau will. Ich habe mich aus irgendeinem Grund von meinem SVN-Repository getrennt und hatte aus diesem Grund keine Zeit für Forschung und Entwicklung. Jetzt benutze ich Filezilla, um mit diesem Befehl ein vollständiges Projekt ohne .svn-Ordner hochzuladen.
Nochmals vielen

Danke dafür. Sehr geschätzt. Ich habe einen Ordnerbaum mit .svn erhalten, benutze ihn aber nicht. Die Suche in Win nach .svn (unabhängig davon, ob versteckte Dateien ein- oder ausgeschaltet sind) ergab keine Ergebnisse. Die Eingabeaufforderung hat es geschafft!
Rid Iculous

Genial. Einfachster und effektivster Weg. In Google nach "Windows cmd Ordner rekursiv entfernen" gesucht, aber ich wollte eigentlich .svn löschen, liebe es, wenn die Suchmaschine meinen Wunsch bis zu diesem Punkt korrigiert :)
Armfoot

1
Vielen Dank! Tipp: Um ein Cmd zu öffnen, das sich bereits in der gewünschten Ordnerverschiebung befindet, klicken Sie im Windows Explorer auf den Ordner und wählen Sie "Befehlsfenster hier öffnen". Auf cmd.exe können Sie einfach mit der rechten Maustaste klicken, um den 2. Befehl @ Ajit / @ izilotti shared einzufügen. Funktioniert wie ein Zauber (win7)
Jorge Orpinel

4
Diese Antwort sollte "Beste Antwort" sein
Mujaffars

48

Führen Sie dies in PowerShell aus.

HINWEIS: Dies ist rekursiv. Stellen Sie also sicher, dass Sie sich im richtigen Verzeichnis befinden!

gci -fil '.svn' -r -force | ri -r -force

Hier ist der Rest meines Quellbaum-Bereinigungsskripts.

gci -fil 'bin' -r -force | ri -r -force
gci -fil 'obj' -r -force | ri -r -force
gci -fil '_ReSharper*' -r -force | ri -r -force
gci -fil '*.suo' -r -force | ri -r -force
gci -fil '*.user' -r -force | ri -r -force

Hinweis: Wenn Sie Pfade mit mehr als 260 Zeichen haben, erhalten Sie eine RemoveItem PathTooLongException.
bluelDe

10

Wenn Sie alle Unterordner mit dem Namen .svn in Windows löschen möchten, erstellen Sie eine Batchdatei mit folgendem Inhalt:

for /f "tokens=* delims=" %%i in ('dir /s /b /a:d *.svn') do (
rd /s /q "%%i"
)

Speichern Sie es in einer Datei del_All_Dot_SVN_Folders.cmd . Starte es. Sie sind fertig.

Vielen Dank an http://www.axelscript.com/2008/03/11/delete-all-svn-files-in-windows/

Denken Sie daran, dass der obige Code .svn hat, während der Code im Link nur * svn hat. Daher ist es besser, die .svn zu haben, um nicht versehentlich unerwünschte Auswirkungen zu haben.


9

Geben Sie einfach .svn in das Suchfeld des Datei-Explorers ein und wählen Sie dann alle Suchergebnisse aus und löschen Sie sie (siehe Kommentar von JB Nizet). Diese Methode kann natürlich auch verwendet werden, um die Verzeichnisse obj und bin schnell zu löschen, z. B. beim Organisieren von SVN-Archiven.

Obwohl OP nach einer Befehlszeilenlösung fragte, gab er auch an, Windows zu verwenden, und erwog eine manuelle Löschung, sodass die Datei-Explorer-Methode weiterhin in Betracht gezogen werden könnte, insbesondere weil sie die schnellste Methode ist und nicht auf Tools wie SVN-Export beruht.

Obwohl OP bereits eine akzeptierte Antwort ausgewählt hat, kann diese Antwort für andere dennoch nützlich sein. Zumindest war es nützlich für mich, einen langjährigen Linux / Windows-Benutzer, der Befehlszeilen bevorzugt und in diesem Beitrag zuerst etwas über das Suchfeld gelernt hat :-)

Explorer-Screenshot mit Suchfeld


1

Tut mir leid, dass ich zu spät zur Party komme, aber hier ist noch eine in einer Zeile:

for /r %i in (.svn) do rmdir /s /q "%i"

0

Ich weiß, dass es zu spät ist, um darauf zu antworten, aber ich denke, es gibt eine einfache Möglichkeit, wenn Eclipse und das SVN-Plugin auf Ihrer Eclipse installiert sind. Klicken Sie mit der rechten Maustaste auf das Projekt und gehen Sie zu Team-> Trennen. Es wird ein Popup geöffnet, in dem Sie die erste Option auswählen: "Löschen Sie auch die SVN-Metainformationen aus dem Dateisystem." Dadurch werden alle SVN-Ordner automatisch entfernt, zusammen mit svn-Eigenschaftendateien, die Sie manchmal vergessen, wenn Sie nur .svn-Ordner entfernen!


-1

Wenn Sie eine Shell ausführen möchten, um .svn-Ordner zu löschen, benötigen Sie möglicherweise das Argument -depth , um zu verhindern, dass der Befehl find in das gerade gelöschte Verzeichnis eingeht und dumme Fehlermeldungen wie z

"find: ./.svn: No such file or directory"

Um diesen Fehler zu beheben, können Sie den Befehl find wie folgt verwenden:

cd [dir_to_delete_svn_folders]
find . -depth -name .svn -exec rm -fr {} \;
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.