subversion (svn)
Ein Subversion (version 1.1.3-1) Repository
ist auf dem Server "terra" (129.206.78.104) installiert und kann mit Hilfe WebDAV-fähiger
subversion-Clients wie z.B. tortoise
, oder subclipse über die URL:
"https://terra.informatik.uni-heidelberg.de/svn/cip-pool"
erreicht werden.
Im folgenden wird nur auf die Nutzung des eclipse Plug-in "subclipse" zur Arbeit mit
Subversion eingegangen, da dies OS-unabhängig sowohl auf Windows als auch Linux Rechnern
verfügbar ist.
Zusammenarbeit von eclipse mit subversion
Voraussetzungen:
- eclipse in der Version 3.00
(besser 3.01)
- das subclipse Plug-in (Version > 0.9.23)
- unter Linux muss zusätzlich das JAVAsvn Plug-in
(Version 0.8X) installiert werden
- eine JAVA-Runtime oder
SDK (Version 1.4X) ist ebenfalls erforderlich
Zur Installation von eclipse & der JAVA-Umgebung ist es lediglich erforderlich die
entsprechenden *.zip bzw *.tgz Dateien in beliebigen Verzeichnissen auszupacken.
Das/die notwendige(n) Plug-in(s) können anschliessend in eclipse nachgeladen werden (siehe
folgender Abschnitt)
Fertige Pakete von eclipse (3.01), die bereits alle notwendigen
Plug-ins beinhalten sind auf CDROM verfügbar und können zur Installation ausgeliehen werden
Damit eclipse auf svn-Repositories zugreifen kann, muss zunächst einmal das subversion-Plug-in "subclipse"
geladen werden. Dazu wird in eclipse der Menüpunkt Help->Software Updates->"Find and install.." ausgewählt.
"Search for new features" gewählt und als Update-site die URL "http://subclipse.tigris.org/update"
angegeben.
Eclipse versucht Kontakt zur angegebenen website aufzunehmen und dort das Plug-in "subclipse"
zu finden & zu installieren (Linux-Benutzer gehen für die Installation des JAVAsvn Plug-in
entsprechend vor, wählen dabei als Update-site "http://tmate.org/svn/".
Ist das Plug-in installiert, steht eine weitere Perspektive "SVN Repository Exploring" zur
Verfügung. Hier kann mit NEW->Repository Location die URL
"https://terra.informatik.uni-heidelberg.de/svn/cip-pool"
für den Zugriff auf das Repository angegeben werden.
Nach Angabe von Kennung & Passwort wird der Zugriff auf Teile des
Repositories gewährt. Die Authentifizierung findet über den LDAP-Server des CIP-Pool statt,
d.h. die anzugebende Kennung & Passwort entsprechen denen des CIP-Pool.
Grundsätzlich ist die
Verwendung von subclipse vergleichbar der des eclipse cvs-Client,
einige Unterschiede bestehen jedoch, daher werden im folgenden typische
Anwendungsbeispiele
dargestellt
Aufgabe 0.: Daten sollen aus dem svn-Repository geholt werden
und als neues Projekt im Workspace des Benutzers abgelegt werden.
Vorgehensweise:
Arbeitsbereich: SVN Repository Exploring
- im Repository des Servers das gewünschte Verzeichnis mit der Maus anklicken
- mit (rechte Maustaste) "Check Out As Project" im lokalen Workspace zur Verfügung stellen.
Sollte im Workspace bereits ein Projekt gleichen Namens vorhanden sein, so kann das neue Projekt mit
"Check Out As ..." unter einem anderen Namen im Workspace abgelegt werden.
Aufgabe I.: Eine neue Datei (neue Dateien)
werden lokal erzeugt und sollen ins Repository aufgenommen werden
Vorgehensweise:
Arbeitsbereich: Resourcen ->"lokales Projekt"
- über (File)-New-File eine neue Datei erzeugt, dem geeigneten Projekt zugeordnet,
mit etwas Text versehen und abgespeichert
- mit (rechte Maustaste) Team- "Add to version control" zur Versionierung angemeldet
(alternativ könnte die Datei auch mit "add to svn:ignore" von der Versionierung (und
Pflege) auf dem Server ausgeschlossen werden.
- anschließend kann die Datei mit Team-commit ins Repository aufgenommen werden
Aufgabe II.:ein Projekt ist lokal vorhanden
und soll als Ganzes in die Versionierung durch subversion importiert werden
Vorgehensweise:
Arbeitsbereich: Resourcen
- mit File-New-Project (simple project) wurde das Projekt "html-Seite"
erzeugt. Die Inhalte (diverse html-Seiten sowie Verzeichnisse mit Bildern etc.) sind
irgendwo auf der lokalen Festplatte bereits vorhanden und sollen in den (default
Workspace) aufgenommen werden.
Mit (rechte Maustaste) Import-FileSystem kann auf der Festplatte das Verzeichnis mit
den Dateien/Ordnern ausgewählt werden und anschließend ausgewählte (oder alle)
Dateien/Verzeichnisse ins lokale Projekt übernommen werden.
- um das nunmehr lokal vorhandene Projekt in das Repository zu integrieren, muss
über Team-"share project"
repository type: SVN
"create a new repository location" gewählt werden
- Location Information:
URL: http://terra.informatik.uni-heidelberg.de/svn/trunk
Root URL: http://terra.informatik.uni-heidelberg.de/svn
User:
Password:
und "finish"
=> in der svn-Sicht ist (nach Aktualisierung) nun ein modul "html-seite" unterhalb
von "trunk" zu finden; das modul ist zunächst noch leer, muss per commit erst mal
mit Daten gefüllt werden. Wie zu erwarten, stellt eclipse beim Versuch zu
"commiten" fest, dass einige Dateien nicht unter Versionskontrolle sind (können
mit "details" aufgelistet werden) und bietet die Aufnahme in die Versionskontrolle
an. Nach einem YES werden die Dateien auf den svn-Server übertragen.
Aufgabe III.:Ein Projekt wurde von 2 Benutzern ausgecheckt, zwischenzeitlich hat der 1te Benutzer geänderte
Daten auf den Server zurückgeschrieben (commit); nun will der 2te Benutzer seine geänderten Daten ebenfalls
zurückschreiben
Vorgehensweise:
Anschließend funktioniert auch das commiten dieser Datei !
Aufgabe IV.: von einem "trunk" wird ein Zweig (branch) genommen, der sich weiterentwickelt
und schließlich mit anderen branches bzw. mit dem trunk vereinigt wird.
- Branch erzeugen (mit subclipse):
Arbeitsbereich: svn repository
- auf den trunk "html-Seite" klicken -> "copy"
- anschließend auf "branches" wechseln (ggf. in eine geeignete Ebene wechseln) und
mit "paste" den Inhalt von trunk "html-Seite" einfügen
=> die Verzeichnisinhalte sind in beiden Fällen identisch; lediglich die Versionsnummer
des erzeugten Verzeichnisses branches/"html-Seite" ist angehoben worden.
- Branch verändern:
der neue unter branches liegende Zweig "html-Seite" wird ausgecheckt, Dateien werden
lokal verändert und per commit ins Repository zurückgeschrieben.
=====================================================
Einschub: in subclipse kann die bewegte Geschichte einer versionierten
Datei mit Hilfe von Team-"show in resource history" betrachtet werden.
=> diese Log-Daten sind beim späteren mergen diverser branches/trunks wichtig!!
======================================================
Aufgabe V.: Von einem Trunk wurde ein Branch
abgespalten - beide Bereiche (Trunk & Branch) haben sich unabhängig voneinander
weiter entwickelt und sollen nun wieder zusammengeführt (gemerged) werden.
Vorgehensweise:
durch "update" & "commit" wurden die jeweils aktuellen Entwicklungsstände
von den lokalen Arbeitsbereichen (unterschiedlicher Rechner/Projektmitarbeiter) auf den
Server geschrieben.
Auf dem Rechner, auf dem Trunk und Branch zusammengeführt werden sollen, wird zunächst der
aktuelle Trunk aus dem Repository in den workspace geladen (z.B. mit "checkout"). Anschliessend
wird die Entwicklung des Branch untersucht. Dies geschieht entweder in der Resourcenansicht
über Team -> "show in Resource History" (falls man den aktuellen Stand im Workspace hat) oder
in der svn-Resourcen Sicht über "show in Resource History".
Hier sucht man die erste Revision, die nach der Abspaltung des Branch vom Trunk entstand.
Die gesuchte Revision weist erstmals den aktuellen Pfad "./branches/.." auf, während alle
früheren Revisionen noch "./trunk/.." als Pfadangaben aufweisen.
In unserem Fall ist der Branch "1a" als Revision 87 vom Trunk abgespalten worden. Sollen Beide
Bereiche wieder zusammengeführt werden, muss der Trunk (in unserem Arbeitsbereich mit dem
Branch des Repository ab Revision 87 gemerged werden.
Consolen-output wie folgt:
merge -r87:HEAD https://terra.informatik.uni-heidelberg.de/svn/branches/1a
C:/Programme/eclipse3.0.1/eclipse/workspace/1a-trunk
C C:/Programme/eclipse3.0.1/eclipse/workspace/1a-trunk/1
C C:/Programme/eclipse3.0.1/eclipse/workspace/1a-trunk/a/1
C C:/Programme/eclipse3.0.1/eclipse/workspace/1a-trunk/2
C C:/Programme/eclipse3.0.1/eclipse/workspace/1a-trunk/b/1
C C:/Programme/eclipse3.0.1/eclipse/workspace/1a-trunk/b/2
A C:/Programme/eclipse3.0.1/eclipse/workspace/1a-trunk/b/3
Skipped C:/Programme/eclipse3.0.1/eclipse/workspace/1a-trunk/c
A C:/Programme/eclipse3.0.1/eclipse/workspace/1a-trunk/c/1
proplist C:/Programme/eclipse3.0.1/eclipse/workspace/1a-trunk
Wie zu erwarten ist es beim mergen zu Konflikten (C) gekommen, nur einige Dateien des Branch
konnten direkt in den Trunk aufgenommen (A) werden.
-> erst nachdem alle Konflikte gelöst wurden (siehe Aufgabe 3) kann das Resultat per commit in den
Trunk des Repository überführt werden.
=>
Ergebnis: der Trunk enthält jetzt alle Änderungen, die im Branch
wie im Trunk durchgeführt worden sind !!!
weitere Informationen im Internet:
- Das Redbook zu Subversion von Ben
Collins-Sussman, Brian W. Fitzpatrick & C. Michael Pilato