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


Folgende Repositories wurden angelegt:
reposBS
reposDESN
reposFR
reposIFI
reposIT
reposML
reposMLSDA
reposMM
reposSE
reposTHI
reposTI
reposTIstud
reposWV

Ansprechpartner

Bei Fragen zur Nutzung des Dienstes wenden sie sich an einen der Administratoren:


Roland Kaminski
Tel.:+49 331 977-3085
Email:kaminski(at)cs.uni-potsdam.de
Raum:03.04.2.08


Klemens Kittan
Tel.:+49 331 977-3125
Email:klemens.kittan(at)cs.uni-potsdam.de
Raum:03.04.2.22

Dokumentation

Eine umfassende Dokumentaion zu Subversion können sie hier einsehen: svnbook.red-bean.com

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.

  
  $ svn update
  

Ä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.

  
  $ svn diff [FILE]
  

Ä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.

  
  $ svn revert [FILE]
  

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] .