Versionsverwaltung mit Subversion
Versionsverwaltung wird vorwiegend zur Softwareentwicklung benötigt, lässt sich aber auch generell auf alle Arten
von Dateien anwenden, um verschiedene Entwicklungsversionen aufzubewahren. Insbesondere bei der Zusammenarbeit
mehrerer Personen in einem solchen Entwicklungsprozess ist eine Unterstützung durch ein Versionsverwaltungssystem sinnvoll.
Die Versionierung erfolgt in einem zentralen Projektarchiv (Repository). Da Subversion ordnerbasiert arbeitet kann
jedes Repository verschiedene Projekte verwalten und diese durch unterschiedliche Zugriffsrechte voneinander trennen.
Ein Vorteil von Subversion ist die native Unterstützung von WebDAV. Damit können die Daten eines Repository auch
sehr einfach über eine Webschnittstelle zur Verfügung gestellt werden ohne dass eine zusätzliche Clientsoftware
benötigt wird. Zum Arbeiten mit Subversion ist jedoch eine Clientsoftware erforderlich.
Der Zugriff auf Subversion erfolgt über folgende URL:
https://svn.cs.uni-potsdam.de/svn/REPOS/PROJEKT
Dokumentation
Eine umfassende Dokumentaion zu Subversion können sie hier einsehen:
svnbook.red-bean.com
Repositories
reposBS
reposDESN
reposFR
reposIT
reposML
reposMLSDA
reposMM
reposTHI
reposTI
reposTIstud
reposWV
Arbeiten mit Subversion
Projekt anlegen
Ein Repository muss prinzipiell vom Administrator angelegt werden. Die Projekte innerhalb eines Repositories, können
von ausgewählten Mitarbeitern der Arbeitsgruppe angelegt werden. Die Berechtigungen auf diese Projekte werden vom
Administrator in Absprache mit der Arbeitsgruppe eingerichtet.
Es hat sich bewährt, für Projekte die Basisverzeichnisse trunk, branches und tags anzulegen. Trunk enthält dabei den
Hauptentwicklungszweig des Projektes, in branches werden weitere Unterverzeichnisse mit alternativen Entwicklungszweigen
verwaltet, und in tags eine Kopie von trunk oder einem der branches als Unterverzeichnis angelegt. Der Vorteil dieser
Struktur besteht darin, dass man branches und tags bequem verwenden kann und sauber von seinen Quellen getrennt hat.
Natürlich kann man den Verzeichnissen beliebige Namen geben, aber es empfiehlt sich bei dieser Namensgebung zu bleiben,
ansonsten kann es schwierig bis unmöglich werden, überhaupt tags anzulegen.
$ svn --parents -m "create project: PROJEKT" mkdir URL/PROJEKT/{build,data,docs,src,test,tools}
$ svn --parents -m "" mkdir URL/PROJEKT/src/{branches,tags,trunk}
Arbeitskopie erstellen
$ svn co URL/PROJEKT/trunk [PATH]
Status der Arbeitskopie
Folgender Befehl listet die geänderten Daten in der Arbeitskopie auf.
Die Option -v zeigt den Zustand jedes Objektes in der Arbeitskopie an, selbst wenn er sich nicht geändert hat.
Die Option -u listet die geänderten Daten, sowohl in der Arbeitskopie als auch auf dem Server auf.
$ svn status
$ svn status -v
$ svn status -u -v
Update der Arbeitskopie
Wenn man festgestellt hat, das sich Änderungen im Repository ergeben haben, sollte man zunächst seine Arbeitskopie aktualisieren.
Änderungen ins Repository einfügen
$ svn commit -m "COMMENT"
Hinzufügen von Dateien
$ svn add [FILE|DIR]
$ svn commit -m "COMMENT"
Löschen von Dateien
$ svn remove [FILE|DIR]
$ svn commit -m "COMMENT"
Dateien umbenennen
Das Kommando kümmert sich nicht nur um die Namensänderung im Repository, sondern auch auch auf
Betriebssystemebene. Man darf also auf keinen Fall die Dateien physikalisch umbenennen.
$ svn mv [OLD] [NEW]
$ svn commit -m "COMMENT"
Unterschiede anzeigen
Mit diesem Befehl können die Unterschiede zwischen der Version im Repository und der lokalen
Arbeitskopie angezeigt werden.
Änderungen nachvollziehen
Subversion bietet die Möglichkeit nachzuvollziehen, wer wann was geändert hat und sich dabei
die bei den entsprechenden commits eingegebenen Kommentare anzeigen zu lassen.
$ svn log [FILE]
$ svn log -r 5
$ svn log -r 5:HEAD
$ svn log -r HEAD:5
Lokale Änderungen rückgängig machen
Solange kein commit ausgeführt wurde, lassen sich nahezu alle Änderungen rückgängig machen.
Arbeitskopie auf einen anderen URL aktualisieren
Dieser Befehl aktualisiert die Arbeitskopie so, dass sie auf einen neuen URL zeigt. Dabei ist
der Punkt am Ende des Befehls wichtig.
$ svn switch --relocate [OLD] [NEW] .