Montag, 5. Oktober 2009

nervige .svn-Dateien entfernen

vor einiger Zeit habe ich mit SVN rumexperimentiert; das Verfahren aber (zumindest zum Teil) wieder aufgegeben, v.a. für Verzeichnisse, an denen sich nicht mehr viel tut - die ich also nur selten benötige. Verwendet hatte ich (auf Windows, da an der Uni) das Programm TortoiseSVN, das sonst eigentlich gute Dienste leistete.

Nachdem ich nun beschlossen hatte, daß ich dieses nicht mehr benötigen würde, ging ich beim Deinstallieren (dummerweise) davon aus, daß die durch SVN angelegeten Verzeichnisse .svn/ auch wieder entfernt werden. Pustekuchen! Ich hatte so in ca. 200 Unterverzeichnissen ein sehr großes .svn-Verzeichnis, das natürlich beim Up- und Download (und auch einfach so) massiv stört.
Daß diese Dateien nicht mitgelöscht werden oder zumindest gefragt wird, ob sie gelöscht werden sollen, find ich sehr schwach und macht mir klar, dass ich in Zukunft zumindest nicht mehr mit TortoiseSVN arbeiten werde.

Um nun diese Verzeichnisse zu löschen, ohne in jedes Verzeichnis wechseln zu müssen, diente mir folgender Befehl:

$> find . -name .svn -type d | xargs rm -r

die Bedeutung der einzelnen Teile ist die folgende:
  • find findet ausgehend vom aktuellen home-Verzeichnis (.) rekursiv alle Dateien, die den Namen (-name) ".svn" besitzen
  • -type d gibt an, dass es sich bei .svn um ein Verzeichnis handelt (directory)
  • die Ergebnisse von find werden an xargs übergeben und mit
  • rm -r gelöscht
Unter Windows ist die Prozedur etwas umfangreicher: man legt eine Datei remove_svn.reg an, mit folgendem Inhalt


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 Removing SVN Folders in %1 && COLOR 9A &&
FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""



Doppelklick auf diese Datei installiert den Registry (.reg)-Eintrag, danach kann auf ein SVN-Projekt mit rechts geklickt werden und "Delete SVN Folder" ausgewählt werden -
alle .svn-Verzeichnisse werden dann rekursiv gelöscht.

[Die Windows-Lösung stammt von http://lifedraft.de/]




3 Kommentare:

David hat gesagt…

Dass ein Programm beim deinstallieren keine Daten löscht die nicht zum eigentlichen Programm gehören ist absolut korrekt.

Evtl willst du ja nen anderen Client verwenden und nicht deine Versionierung verlieren nur weil du Tortoise nicht mehr brauchst.

Außerdem müsste das Deinstallationsprogramm ja die ganze Platte nach .svn Ordnern abscannen!

Wenn man ein Grafikprogramm deinstalliert wird man ja auch nicht gefragt ob alle Bilder auf der Festplatte gelöscht werden sollen.

MfG

Anonym hat gesagt…

Hi,

habe deinen sehr netten Blog eben bei der Google suche gefunden und SVN bietet für dein Problem auch schon eine Lösung. Zumindest der SVN Client unter Linux kennt das Kommando: `svn export /my/repos' oder auch `svn export /my/workingcopy'. Beides zieht Head-Revision aus dem SVN gedöhns heraus.

Joey5337 hat gesagt…

jaja, ich will mir gar nicht vorstellen was Heidi sagen würden wenn auf einmal alle .tex-Dateien gelöscht wären, nur weil man mal ne alte Tex-Distro vom System runtergeworfen hat...