SVN und Subclipse
Informationen zur Benutzung von SVN beim Programmierpraktikum
| letzte Aktualisierung: | 25.04.07 |
Inhaltsverzeichnis:
- Allgemeines zu SVN
-
Was ist SVN?
-
Was ist ein Repository?
-
Wichtige Begriffe
-
CheckOut
-
Update
-
Revert
-
Commit
-
Lock/Unlock
- Subclipse: SVN mit Eclipse benutzen
-
Installation von Subclipse
-
Arbeiten mit Subclipse
-
Verbindung zu Repository herstellen
-
Mit dem Repository arbeiten
- Der Server: SVN Repositories anlegen und verwalten
-
Zugriff auf den Server per SSH
-
vorgefertigten Struktur auf dem Server (updated)
-
Shell Befehle für SVN
-
Allgemeine Hinweise
1.1 Was ist SVN?
SVN (Subversion) ist ein Versionsverwaltungssystem und gilt als der inoffizielle Nachfolger von CVS.
Hierbei werden sämtliche Dateien eines Projektes zentral auf einem Server gespeichert und verwaltet. Alte Dateiversionen werden als sogenannte "Revisionen" gespeichert und können jederzeit eingesehen und wiederhergestellt werden.
Dies verhindert Konflikte, falls mehrere Personen auf die gleichen Dateien zugreifen und diese verändern und erleichtert die Kollaboration an Projekten.
1.2 Was ist ein Repository?
Repositories sind der grundlegende Kern von SVN.
Alle Dateien und deren Informationen werden in dem entsprechenden Repository gespeichert..Das Repository ist also der Dreh- und Angelpunkt eines SVN-Projektes:
Alle Dateien des Projekts werden hier sowohl in der aktuellsten, als auch in älteren Revisionen zentral gespeichert.
1.3 Wichtige Begriffe
1.3.1 Checkout
Bevor man Dateien in einem Repository verändern kann muss man eine sogenannte Working Copy erstellen. Hierfür gibt es die Funktion CheckOut.
Ein CheckOut bewirkt, dass man eine lokale Kopie des Repositories erhält, mit der man anschließend arbeiten kann.
1.3.2 Update
Damit nicht immer wieder eine neue Working Copy erstellt werden muss, kann mit dem Updatebefehl die schon bestehende lokale Kopie aktualisiert werden. Dies sollte vor jeder Projektbearbeitung passieren.
1.3.3 Revert / Show in Ressource History
Auch das Aufrufen einer älteren Revision ist möglich, falls ungewollte oder fehlerhafte Änderungen passieren. Hierzu lässt sich zu jeder Datei und jedem Ordner jede Revision erneut aufrufen. Das ist natürlich ein weiterer Grund, aus dem ein Commit oft durchgeführt werden sollte.
1.3.4 Commit
Mit Commit werden Änderungen der Working Copy in dem Repository gespeichert.
Hierbei wird die Revisionsnummer der veränderten Dateien um eins erhöht.
1.3.5 Lock/Unlock
Um gleichzeitige Änderungen und ggf. sich überschneidene an einer Datei zu vermeiden, ist es möglich Dateien eines Repositories zu sperren (lock). Nachdem die Datei fertig bearbeitet und mittels Commit aktualisiert wurde, kann sie wieder entsperrt (unlock) werden.
Alternativ bietet SVN mit Merge jedoch eine deutlich praktischere Methode dieses Problem ohne einen Lock zu lösen.
2. Subclipse: SVN mit Eclipse benutzen
2.1 Installation von Subclipse
Subclipse lässt sich über den Update Manager von Eclipse installieren.
Dieser findet sich unter:
Help -> Software Updates -> Find and Install
Hier muss jetzt "Search for new features to install" ausgewählt und anschließend als
new Remote Site mit dem Titel "Subclipse" die Subclipse-url eingetragen werden:
http://subclipse.tigris.org/update
Durch Auswählen des neu enstandenen Eintrags wird nun die Software gesucht, anschließend wird der Installationsvorgang gestartet. Bevor mit Subclipse gearbeitet werden kann, muss Eclipse neugestartet werden.
Eine ausführlichere Beschreibung der Installation inkl. Screenshots gibt es hier: http://subclipse.tigris.org/install.html
Falls die Auswahl von Subclipse auf Grund von Paketabhängigkeiten nicht möglich ist, müssen Sie die entsprechenden Eclipse-Pakete seperat herunterladen.
2.2 Arbeiten mit Subclipse
2.2.1 Verbindung zu Repository herstellen
Durch die Installation von Subclipse gibt es in Eclipse die neue Perspektive "SVN Repository Exploring" (Zugriff auf Perspektiven über: Window -> Open Perspektive -> other).
Um nun eine Verbindung zu einem Repository herzustellen, muss man in diese Perspektive wechseln und einen neuen Eintrag erstellen (Rechtsklick -> New Repository Location)
Hier müssen nun folgende Eingaben getätigt werden:
- Url des Repositories in der Form svn+ssh://gruppeXX@progprak.scale.uni-koeln.de/home/gruppeXX/_repository_dir_
(wobei gruppeXX natürlich für die Gruppe und repository_dir für das Verzeichnis des entsprechenden Repositories steht )
- Passwort
-
Hinweis: Falls keine Verbindung hergestellt werden kann, ändern Sie unter
Window -> Preferences -> Team -> SVN
das SVN Interface auf JavaSVN (Pure Java).
Wenn der Vorgang erfolgreich abgeschlossen ist, sollte das Repository in der Liste auf der linken Seite erscheinen.
Um nun eine Working Copy des Repositories auf dem lokalen Rechner zu erstellen, muss ein CheckOut durchgeführt werden (Rechtsklick auf das Repository -> Checkout).
Die folgenden Dialoge können normalerweise einfach nur bestätigt werden.
Als Projekttyp sollte hier natürlich Java Project ausgewählt werden, der Projektname, falls ein neues Projekt erstellt wurde, kann natürlich individuell ausgesucht werden.
Anschließend sollte wieder in die Java Perspektive gewechselt werden, in der jetzt die Working Copy angezeigt wird.
2.2.2 Mit dem Repository arbeiten
Mit der nun vorhandenen Working Copy kann also an dem gemeinsamen Projekt gearbeitet werden. Alle Dateien und Ordner inklusive Revisionszahl, letztem Änderungsdatum sowie Autor können eingesehen und lokal bearbeitet werden.
Damit hierbei nichts durcheinander kommt, sind ein paar Regeln zu beachten:
-
Update: Vor jeder Bearbeitung des Projekts muss ein Update der gesamten Working Copy durchgeführt werden. Nur so kann sichgestellt werden, dass die Dateien auf dem neuesten Stand sind.
Rechtsklick auf Projekt -> Team -> Update
-
Commit: Nach jeder Bearbeitung der Dateien muss die neue Version mittels Commit im Repository aktualisiert bzw. gespeichert werden. Ein Kommentar über die Veränderungen ist hierbei zwar nur optional, aber sehr zu empfehlen.
Rechtsklick auf Projekt -> Team -> Commit
-
Show in Resource History: Um per Commit gespeicherte Änderungen rückgängig zu machen, kann über Show in Resource History jederzeit eine ältere Version geöffnet werden.
Um eine ältere Revision wieder herzustellen muss folgendes gemacht werden:
1.) Rechtsklick auf die gewünschte Revision -> Get Contents
2.) normalen Commit der Datei durchführen
Um Änderungen einer älteren Revision rückgängig zu machen muss die Option "Revert Changes from Revision X" ausgewählt werden, hier kann es allerdings zu Konflikten kommen.
3. Der Server: SVN Repositories anlegen und verwalten
3.1 Zugriff auf den Server per SSH
Mit ihrem Gruppenaccount, den Sie für Subclipse benutzen, können Sie auch direkt auf den Server zugreifen, um z.B. die Repositories zu administrieren. Hierzu benötigen Sie einen geeigneten SSH Client (für Windows z.B. PuTTY).
Als Host verwenden Sie hier bitte wie gewohnt progprak.scale.uni-koeln.de.
Nachdem Sie die Verbindung aufgebaut und Ihre Benutzerkennung eingegeben haben, befinden Sie sich in dem sogenannten "Home"-Verzeichnis Ihrer Gruppe.
Achtung: Vermeiden Sie es, manuell an den Dateien und Verzeichnissen, insbesondere den Repositories herumzuspielen. Die Repositories sollten ausschließlich über die in 3.3 vorgestellten Befehle bearbeitet werden.
3.2 Informationen zur vorgefertigten Struktur
Für jede Gruppe haben wir bereits Repositories in den folgenden Verzeichnissen eingerichtet:
-
~/server/ : Anfangs befinden sich hier zwar noch keine Java-Dateien, aber das sollte sich möglichst schnell ändern!
Nachdem Sie sich mit dem vorgefertigten Server-Repository (s.u.) verbunden und die ersten Klassen "commitet" haben, werden diese hier automatisch abgelegt und permanent aktualisiert.
-
~/repository_client/ : Dieses Repository ist zur Verwaltung der Client-Klassen gedacht. Um auf dieses Repository zu zugreifen müssen Sie als repository_dir in 2.2.1 "repository_client" einsetzen.
-
~/repository_server/ : Dieses Repository ist zur Verwaltung der Server-Klassen gedacht. Um auf dieses Repository zu zugreifen, verwenden Sie analog in 2.2.1 das Verz. "repository_server".
Dieses Repository bietet zusätzlich eine besondere Funktion: Bei einem Commit, z.B. durch Subclipse von Ihnen zu Hause, werden hier automatisch die Server-Dateien im Verzeichnis ~/server/ aktualisiert und kompiliert, so dass die Serversoftware in diesem Verzeichnis immer auf dem neuesten Stand ist, ohne dass ein SSH Zugriff zur Aktualisierung und Kompilierung notwendig wäre.
Natürlich steht es Ihnen frei, mit Hilfe der im nächstem Abschnitt aufgeführten SVN-Befehlen weitere Repositories zu erstellen und zu benutzen, wir empfehlen Ihnen allerdings die Nutzung der oben genannten Repositories.
Achtung: Das automatische Kompilieren auf dem Server kann auf Grund verschiedener Zeichencodierungen fehlschlagen, wenn Sie in Ihren Java-Dateien Umlaute und Sonderzeichen verwenden.
Desweiteren sollten Sie sicherstellen, dass der Server während des commites nicht läuft, sonst können Klassen ggf. nicht aktualisert werden (um einen SSH-Zugriff zwecks Starten und Stoppen des Servers kommen Sie also nur schwerlich umher).
Nähere Informationen zum Thema Zeichencodierung (und wie Sie die Zeichencodierung in Eclipse verändern) finden Sie auch im FAQ.
3.3 Shell Befehle für SVN
Von der Shell Oberfläche aus können Sie neue Repositories und Working Copies erstellen, vorhandene Löschen und bei einem Fehler recover durchführen.
Hier eine Übersicht:
-
svnadmin create / svnadmin drop : Erstellt/löscht ein Repository.
-
svnadmin recover: Stellt ein Repository nach Fehlern wieder her.
-
svn: mit Hilfe des svn-Befehls können WorkingCopies erstellt und verwaltet werden. Die Aufgaben, die Subclipse per Mausklick erledigt, können mit svn per Hand ausgeführt werden. Für eine Übersicht der vorhandenen Befehle und der Syntax brauchen Sie lediglich "svn help" einzugeben (viele der hier aufgeführten Begriffe sind unter 1.3 erklärt).
Für Informationen über einzelne "Subbefehle" geben Sie lediglich z.B. "svnadmin help recover" bzw. "svn help commit" ein (in diesem Fall würden Sie Informationen über "recover" bzw. "commit" erhalten).
4. Allgemeine Hinweise
Natürlich bietet Subclipse noch einige weitere Möglichkeiten, die hier nicht behandelt wurden. Die Funktionalität die hier beschrieben wurde, sollte für den Gebrauch zum Zwecke des Programmierpraktikums reichen.
Situationen, in denen gleichzeitig an den selbessh_connectn Dateien gearbeiter wird und ein Merge durchgeführt werden muss, sollten bei den vorhandenen Teamgrößen vermieden werden können.
Falls dennoch Interesse besteht sich mit dem vollen Funktionsumfang von Subversion/Subclipse auseinanderzusetzen, empfehlen wir folgende Links:
Weitere Fragen zu SVN oder Subclipse an Simon Marqua.
|