Subversion – Aufgaben mit der Kommandozeile lösen

In diesem Artikel werde ich mit der Zeit, einige Lösungen für typische Aufgaben die bei täglichen Arbeit mit Subversion anfallen, dokumentieren

Hinzugefügte Dateien wieder entfernen

Ab und an kommt es vor dass man eine Datei oder einen Ordner der bereits mit svn add name hinzugefügt, aber noch nicht commited hat, wieder entfernen möchte. Mir passiert das Regelmäßig wenn ich einen kompletten Ordner hinzugefügt habe und dann feststelle, dass sich in diesem Ordner Dateien oder Unterordner befinden die ich eigentlich gar nicht unter SVN Kontrolle haben möchte. Solange noch nicht commited wurde ist die Lösung einfach svn revert hilft weiter. Ein Beispiel:

svn revert --recursive .

Dieses Kommando wirkt rekursiv auf Dateien und Ordner und Unterordner ab dem aktuellen Verzeichnis.

Aber Achtung, wenn die Dateien schon commited wurden, werden alle Änderungen an den Dateien wieder Rückgängig gemacht. Das Handbuch sagt, dass in diesem Fall ein svn revert datei wirkt wie:

svn update -r BASE datei

Besser ist es, man hat ein Backup!

Herausfinden welche Dateien noch nicht unter Subversion Kontrolle stehen

Das Kommondo svn status sollte jeder kennen der mit Subversion arbeitet. es gibt viele nützliche Informationen über den Status des lokalen Repositories. Bei großen Projekte mit vielen beweglichen Daten, z.b. Grafiken, die besser nicht unter SVN gehalten werden, kann es sinnvoll die Ausgabe mit grep zu filtern.

# Zeigt alle Dateien die nicht unter SVN Kontrolle stehen
svn status | grep ^?
# Zeigt nur .sql Dateien die nicht unter SVN Kontrolle stehen
svn status | grep ^? | grep .sql

Ein Repository löschen

Das Löschen eines Repositories ist denkbar einfach, es muss nur komplett gelöscht werden. Sinnvoll ist aber in jedem Fall vorher ein Dump anzulegen.

# dump erzeugen und komprimieren
svnadmin dump -q /repos_name | bzip2 -c > repos_name.dump.bz2
 
# Repository engültig löschen
rm -rf repos_name

Alle .svn Verzeichnisse löschen

Manchmal, wenn man sich die Dinge zurechtkopiert, möchte man alle .svn Verzeichnisse löschen die sich in einem bestimmten Verzeichnis befinden:

# Alle .svn Verzeichnisse löschen
find . -name ".svn" -exec rm -rf {} \;

Leave a Reply