svn-Repositories auf dem Webserver ikaria

svn?

svn (ausgeschrieben "Subversion") ist ein Versionskontrollsystem. Das bedeutet, dass ein Team von berechtigten Teilnehmern an einem quasi gemeinsamen durch svn verwalteten Verzeichnis (und Unterverzeichnissen) arbeiten. Dabei wird immer ein konsistenter Stand aller Dateien gewahrt, wenn zwei Nutzer an der gleichen Datei gearbeitet haben, kann es natürlich immer noch zu Konflikten kommen – aber diese treten nur bei demjenigen auf, der als letzter die geänderte Datei einchecken will – für die anderen Teilnehmer ist der Konflikt nicht spürbar. Gerade wenn mehrere Personen an einem gemeinsamen Projekt arbeiten, ist svn eine praktische Einrichtung und (Verfügbarkeit des Internets vorausgesetzt) wesentlich komfortabler als das Herumreichen von USB-Sticks.

Wie kann ich da mitmachen?

Damit ein Repository eingerichtet werden kann, benötige ich die folgenden Daten:

Dies alles bitte in eine Mail verpacken und an ad001@uni-rostock.de schicken.

Als Tipp sei hier noch angeführt, dass svn den Schutz von Quelldateien wesentlich fördert, es gibt also eigentlich keinen Grund, einzelnen Mitgliedern eines Projekts die Schreibrechte zu entziehen. Schliesslich ist svn eben auch dazu da - unglückliche Änderungen zurücknehmen zukönnen. Denn die Änderungen einer Revision (selbst wenn diese das komplette Repository löscht) lassen sich mittels Checkout einer älteren Revision (und anschließendem neu einfügen) beheben.

Am Beispiel

Für alle, die noch keine Erfahrungen mit svn haben, einmal alle Schritte vom Anlegen des Repositories bis zum Nutzen:

Anlegen des Repositories

Projektname: testrepo
Öffentliches Leserecht: nein
Benutzer:
ad001,nn999

Erstes Auschecken des Repositories

Auch dies zum Beispiel auf catalina:
	[ad001@catalina ~/svn]$ svn co https://ikaria.informatik.uni-rostock.de/svn/testrepo
	Authentication realm:  Subversion Repositories
	Password for 'ad001':
	Checked out revision 0.
		
Nun liegt das Repository in der Revision 0 auf catalina. Das zu benutzende Passwort ist das, welches zu dem entsprechenden Rechenzentrumslogin gehört. Bitte auch beachten, dass https genutzt wird, wodurch die Kommunikation verschlüsselt wird.

Eine Datei hinzufügen

Angenommen, wir haben eine neue Datei irgendwie in das Verzeichnis eingefügt und möchten diese Datei nun dem svn hinzufügen. Dies sieht wie folgt aus:
	[ad001@catalina testrepo]$ svn add blubb
	A         blubb
	[ad001@catalina testrepo]$ svn ci --message "Eine neue Datei: blubb"
	Adding         blubb
	Transmitting file data .
	Committed revision 1.
	[ad001@catalina testrepo]$
		
Zunächst wird die Datei mit dem svn add als neue Dateien bekanntgebeben. Anschließend werden die Änderungen (das betrifft immer alle Änderungen, auch wenn Dateien mittels svn cp kopiert, mittels svn mv verschoben, mittels svn rm geloescht wurden) zum Server übertragen. Wenn die Commit-Message nicht mit --message als Parameter übergeben wird, dann wird ein Editor geöffnet, in dem die Commit-Message editiert werden kann.

Aktualisieren

Um eine Kopie des Repositories auf den aktuellen Stand zu bringen, wird das Kommando svn up genutzt, welches ungefähr die folgenden Ausgaben zur Folge hat:
	[ad001@glas /usr/home/ad001/svn/testrepo]$ svn up
	A    blubb
	Updated to revision 1.
	[ad001@glas /usr/home/ad001/svn/testrepo]$
		
Anhand des einzelnen Buchstabens ist zu erkennen, was mit der betroffenen Datei geschehen ist (also weshalb svn sie jetzt anfasst). Dabei haben die Buchstaben die folgenden Bedeutungen:
AAddDie Datei wurde neu hinzugefügt
DDeleteDie Datei wurde gelöscht
UUpdateDie Datei wurde geändert
Dann gibt es noch den Fall, dass beim Update die Datei gleichermassen lokale Änderungen hat wie auch solche von anderen Nutzern
GMergeDie Dateiversion vom Server und lokal auf dem Rechner konnten erfolgreich zusammengeführt werden. Glückwunsch!
CConflictDie Datei konnte nicht automatisiert mit der lokalen Version zusammengeführt werden.. nun ist es am Benutzer, den Konflikt aufzulösen

Weitere Informationen

Weitere Hilfe zu einzelnen Befehlen gibt es mit svn help. Um mehr zu erfahren (auch darüber, dass es eine hübsche Win32-Oberfläche namens TortoiseSVN gibt), schaue man sich auf http://subversion.tigris.org/ um. Ferner haben einige IDEs Plugins oder Unterstützung für die Nutzung von Subversion, hier seien Eclipse (Subclipse), KDevelop und Microsoft Visual Studio.net genannt.

Impressum

Technischer Ansprechpartner ist Andreas Dähn, Inhaltlich verantwortlich ist der Fachschaftsrat Informatik.