Home > Werkzeuge > Versteckte .svn Ordner unter Windows löschen

Versteckte .svn Ordner unter Windows löschen

Bei Projektversionsverwaltung SVN (Subversion) werden beim Auschecken (Check Out) automatisch versteckte .svn Ordner erstellt. In allen Verzeichnissen und Unterverzeichnissen befindet sich ein solches svn-Verzeichnis. Er ist notwendig für die Versionsverwaltung.

Möchte man ein ausgechecktes Projekt irgendwo wiederverwenden oder in einen eigenen bzw. einen anderen Ordner kopieren, dann achtet man in der Regel darauf, dass die Struktur sauber ist und keine überflüssigen .svn Verzeichnisse übrig bleiben. Mir geht es so, dass ich mir sicher sein will, dass ich keine Reste von einem fremden Projekt mitkopiere.

Unter Linux lassen sich die versteckten Dateien dieser Ordner sehr bequem mit einem einzigen Befehl rekursiv löschen. Folgenden Befehl kann man in der Linux Shell zum Löschen nutzen:

[code]
find . -name .svn -type d -exec rm -r {} \;
[/code]

Es wird nach Verzeichnissen mit dem Namen „.svn“ gesucht und mit einem anschließenden „rm -r“ rekursiv komplett gelöscht. In Windows ist dies nicht so einfach in der cmd möglich. Hier muss man schon das System um einigen Befehle erst einmal erweitern. 😉

In Windows muss zuerst eine .reg Datei mit folgendem Inhalt erstellt werden, z.B. nennen wir diese Datei einfach mal svn_ordner_loeschen.reg, speichern diese in einem beliebigen Ordner, zum Beispiel auf dem Desktop oder in den „Eignen Dateien“. Sie hat folgenden Inhalt:

[code]
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="Delete SVN Folders"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Entferne SVN Ordner in %1 && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""

[/code]

Nach dem die Datei gespeichert wurde, sollte das richtige Register Icon automatisch für diese Datei ausgewählt worden sein, da *.reg Files mit diesem Symbol verknüpft bzw. gekennzeichnet werden. Anschließend muss die Datei per Doppelklick ausgeführt werden. Das kleine Script schreibt die ensprechenden Schlüssel (Keys) in das Windows Register. Damit haben wir im Windows Betriebssystem eine sogenannte Shell Extension erstellt.

Um nun den letzten Schritt zum tatsächlichen Löschen aller versteckten SVN-Dateien durchzuführen, klickt man das entsprechende Verzeichnis mit der rechten Maustaste an und wählt etwas weiter oben den im Shellscript zuvor definierten Menüeintrag „Entferne SVN Ordner“ aus. Es sollte sich ein cmd Fenster öffnen und das Shell Script geht dann automatisiert in alle Verzeichnisse und bereinigt den Ordner von svn Files.

  1. Eckhard Schindler
    20. März 2012, 12:58 | #1

    Bei mir löscht diese Windows-Shell-Erweiterung alles physisch, ich hätte es jedoch gern im Papierkorb. Wie kann man das erreichen?

    • Peter
      21. März 2012, 10:51 | #2

      Hallo Eckhard,

      ich denke man könnte die Shell Erweitung modifizieren, indem man in der Schleife die Ordner nicht löscht, sondern nur verschiebt. Und zwar in den Recycle Bin Ordner (Papierkorb). Alle anderen Befehle, die ich kenne löschen die Dateien bzw. die Ordner (DEL, RD). Mit dem Befehl MOVE kann man die Dateien verschieben, dazu muss man den Pfad zum Papierkorb angeben.

      Ausprobieren kannst Du es in der Windows Kommandozeile so:
      [code]
      move /Y "Datei oder Ordner" "Pfad zum Ordner/Papierkorb"
      [/code]

      Statt RD müsste also MOVE in der Schleife der Shell Erweiterung verwendet werden.

  2. Eckhard Schindler
    21. März 2012, 15:38 | #3

    Danke. Habs mit 4nt.exe statt cmd.exe gelöst -> dann arbeitet RD automatisch in den Recycle Bin.

    • Peter
      21. März 2012, 16:06 | #4

      Gut zu wissen, Danke für die Info!

  3. Nadia
    2. Januar 2017, 16:19 | #5

    Kann man es auch rückgenig machen? Denn jetzt nach den Ausschenken bleibt keine Verbindung zwichen den Localen Ordner und den in svn?

  4. Peter
    2. Januar 2017, 17:59 | #6

    @Nadia
    Leider verstehe ich nicht, was du genau meinst. Was genau möchstest du rückgängig machen?

  1. Bisher keine Trackbacks