SVN Subversion

Einführung der wichtigsten Befehle wie import, update, delete, add, commit der SVN Subversion Versionskontrolle



SVN ist eine von CollabNet entwickelte Open-Source Versionierungssoftware auf Konsolenbasis, welches die ältere und mit schwächen behaftete CVS Versionierungssoftware ablösen soll.

In SVN sind sämtliche Daten in einem >>Repository<< abgelegt. Das Repository befindet sich in der Regel auf einem zentralen Server von wo aus alle Mitarbeiter zugreifen können. Um Änderungen am Repository vorzunehmen, benötigen Sie eine >>lokale Arbeitskopie<<, welche Sie sich über den Checkout-Befehl >>co<< anlegen können. Um diese lokale Arbeitskopie immer auf dem neuesten Stand zu halten, sollten Sie diese vor jeder Arbeit mit dem >>update-Befehl<< aktualisieren.

Mit dem >>add-Befehl<< und >>delete-Befehl<< kann dem Repository auch nachträglich eine neue Datei hinzugefügt oder gelöscht werden.

Irgendwie müssen die bearbeiteten Daten aus Ihrer lokalen Arbeitskopie auch wieder in das Repository gelangen. Hierfür gibt es den >>commit-Befehl<<


import-Befehl
Mit dem Import-Befehl werden die zu versionierenden Dateien und Ordner in das >>SVN-Repository<< übertragen.

Dieser Befehl wird in der Regel nur zu Beginn benötigt um einmal ein Projekt anzulegen.
Mit der Option >>-m<< geben Sie einen Beschreibugnstext ein.

svn import -m "Beschreibungstext" Version1 "./subversion/repository/projekt/trunk/"
checkout-Befehl
Mit Checkout >>co<< können Sie Daten mit einem bestimmten Versionsstand aus dem Repository auschecken
svn checkout "./svn/repository/projekt/trunk" Zielverzeichnis

// oder die Kurzform

svn co "./svn/repository/projekt/trunk" Zielverzeichnis

// oder über das Netzwerk

svn co "http://localhost:8080/svn/repository/projekt/trunk" Zielverzeichnis
update-Befehl
Um immer die aktuelle Revision des Repository auf Ihrer >>lokale Arbeitskopie<< zu gewährleisten, sollten Sie vor jeder Arbeit den update-Befehl ausführen.
Der Grund: Sollte ein Arbeitskollege im Repository die Revisionsnummer durch hinzufügen neuer Daten verändert haben, müssen Sie nachträglich die entsprechenden Revisionskonflikte durch manuelles Editieren Ihrer Revision vornehmen. Um diesem Konflikt möglichst zu entgehen, einfach vor jeder Arbeit Ihre lokale Arbeitskopie updaten.
svn update

// Als Ergebnis geupdateter Dateien könnte nach dem Befehl folgende Ausgabe erscheinen:
// U Datei.txt
// Updated to revision 10
add-Befehl
Mit dem add-Befehl kann eine Datei oder ein Ordner in der lokalen Arbeitskopie neu angelegt werden. Nach dem hinzufügen ist die Änderung jedoch nur Ihrer lokalen Arbeitskopie bekannt. Erst nach einem erfolgreichen commit ist die Änderung auch dem Repository bekannt!
// Neue Datei hinzufügen
svn add Dateiname.txt


// Neues verzeichnis Hinzufügen
svn add Verzeichnis


// Datei mit Unterverzeichnis hinzufügen
svn add Verzeichnis/Dateiname.txt
revert-Befehl
Hiermit kann eine Datei oder ein Verzeichnis nach dem Hinzufügen mit >>add<< wieder gelöscht werden.
// Hinzugefügte geaddete Datei wieder entfernen
svn revert dateiname

// Parallel kann natürlich auch ein Verzeichnis entfernt werden
svn revert Verzeichnisname
Tag
Ein Tag ist eine Kopie eines Repository zu einem bestimmten Zeitpunkt. In diesem Tag werden alle Änderungen die zu diesem Zeitpunkt gemacht wurden gespeichert
Allgemein:
svn cp Quellverzeichnis Zielverzeichnis

svn cp ./svn/repository/projekt/trunk ./svn/repository/projekt/tags/tagname
delete-Befehl
Hiermit kann eine Datei oder ein Verzeichnis/Ordner nachträglich aus der lokalen Arbeitskopie gelöscht werden. Nach dem löschen ist die Änderung jedoch nur in der lokalen Arbeitskopie bekannt. Erst nach einem erfolgreichen >>commit<< ist die Änderung auch dem Repository bekannt!
// Datei löschen
svn delete dateiname.txt

// Synchron kann auch ein komplettes Verzeichnis oder Tag gelöscht werden
svn delete verzeichnisname
svn delete tags/tagname
commit-Befehl
Hiermit wird Ihre lokale Arbeitskopie in das Repository geladen.
Mit der Option >>-m<< geben Sie einen Beschreibugnstext ein.
svn commit -m "Änderungsbeschreibung"

// oder die Kurzform

svn ci -m "Änderungsbeschreibung"
Wichtige SVN-Kommandos
Zwei Dateien miteinander vergleichen
svn diff

Abgleich einer Datei in zwei Repositories
svn merge

Beschreibungstexte (bei Angabe von delete und commit) anzeigen
svn log

Statusanzeige einer lokalen Arbeitskopie
svn status

Verzeichniss direkt im Repository anlegen
svn mkdir

Sperren beseitigen und unterbrochene Informationen beenden
svn cleanup

Teile einer lokalen Arbeitskopie/Repository sperren
svn lock

Repositories sichern
svn export