· 3 min read

Subversion und .svn Verzeichnisse finden und löschen

Viele folgen der Empfehlung das zentrale SVN-Repository/Archiv mit Unterverzeichnisse zu strukturieren, die den jeweiligen Software-Status widerspiegeln. “trunk” für die aktuelle Entwicklung, “stable” für den stabilen Stand, “branches” und “tags” für unabhängige Entwicklungslinien mit der gleichen Historie. Die letztgenannten fließen häufig in den Hauptzweig zurück.

Für jede Datei in einem Projekt merkt sich Subversion zwei essentielle Informationen in einem eigenen Verwaltungsbereich. Dieser Bereich sind die .svn-Verzeichnisse die in jedem Projekt-Order zu finden sind. Dort merkt sich SVN auf welcher Revision die Arbeitsdateien aufbauen und den Zeitstempel der letzten Aktualisierung.

Die .svn-Verzeichnisse werden nur während der Entwicklung benötigt und sind auf produktiven System eher unerwünscht. Subversion ermöglicht durch den Unterbefehl “export” eine unversionierte Version eines Projekts zu erstellen. Die exportierte Version ist frei von den subversion-spezifischen Dateien und Verwaltungsbereichen. Dennoch kommt es hin und wieder vor, dass man in einer lokalen Kopie (auf dem eigenen Rechner oder auf dem Server) die .svn löschen möchte, weil zum Beispiel gerade in diesem Augenblick nicht die Möglichkeit besteht einen Export zu generieren.

Die folgende Bash-Scriptzeile kann benutzt werden, um alle .svn-Vezeichnisse und Dateien die mit “._” beginnen zu finden und zu löschen.

[bash] find . -name “.svn” -prune -o -name “._*” -exec rm -rf {} ; [/bash]

Windows-Benutzer können die Script-Zeile in einer Cygwin-Shell verwenden.

Typische SVN-Kommandos die täglich eingesetzt werden:

[bash] #---------------------------------------------------------------------- # Eine lokale Kopie eines Projektes aus dem zentralen Archiv erstellen #---------------------------------------------------------------------- svn checkout svn://example.com/svn/trunk # über das svn-Protokoll svn checkout https://example.com/svn/trunk # über HTTP

#---------------------------------------------------------------------- # Basis-Befehle #---------------------------------------------------------------------- svn up # Kurzform für “svn update”; Aktualisiert die lokale # Version auf den Stand des zentralen Repository svn add [Datei] # Fügt eine Datei zu dem Projekt hinzu svn ci -m “Nachricht” # Kurzform für ‘svn commit -m “Nachricht”’; # Überträgt die eigenen Änderungen in das # zentrale Repository svn log # Zeigt die Historie eines Projektes

#---------------------------------------------------------------------- # Arbeiten mit Verzeichnissen und Dateien #---------------------------------------------------------------------- svn copy Datei-A Datei-B # Erstellt eine Kopie von “Datei-A” unter # dem Namen “Datei-B” und nimmt diese # in die Versionierung auf svn mkdir MeinNeuesVerzeichnis # Erstellt ein Verzeichnis mit dem Namen # “MeinNeuesVerzeichnis” und nimmt es in # die Versionierung auf svn mv Datei-A Datei-B # Benennt eine Datei mit dem Namen # “Datei-A” nach “Datei-B” um. Die Historie # bleibt dabei erhalten svn rm Datei-A # Löscht “Datei-A” und nimmt diese aus der # Versionierung raus

#---------------------------------------------------------------------- # Verschiedenes/Nützliches #---------------------------------------------------------------------- svn status # Zeigt den Status (Veränderugen) der lokalen Version an. svn diff # Zeigt den Unterschiede im Unix-Diff-Format an. # Die Ausgabe kann in eine Datei umgeleitet # werden, um einen Patch zu erstellen svn revert # Verwirft die eigenen und noch nicht übergebenen Änderungen. # Dabei wird die lokale Version auf die letztbekannte # Version gebracht svn info # Zeigt allgemeine Informationen zu einem Projekt [/bash]

Subversion bringt weit mehr Befehle mit, um die volle Kontrolle über die Versionierung zu behalten, aber dies würde den Rahmen dieses Artikels sprengen. Weiterhin kapseln Werkzeuge wie Tortoise-SVN diese Befehle und Funktionen in einer GUI, um die Arbeit zu vereinfachen. Dennoch ist es sinnvoll mit den direkten Befehlen umgehen zu können, falls eine GUI nicht zur Verfügung steht. Interessierte, die mehr über Subversion und dessen Möglichkeiten erfahren wollen, finden in folgenden Büchern alles Wissenswerte über dieses Tool.

Dieses Buch ist auch in einer freien digitalen Version unter folgender Adresse erhältlich: http://svnbook.red-bean.com/

Back to Blog