|
||
Startseite
User-Bereich |
HowTo zum Aufsetzen und Benutzen eines SVN Servers 1. Einrichten und Konfigurieren des Servers Zum Zugriff auf die Subversion Repositories können verschiedene Server verwendet
werden, Apache mit WebDAV oder svnserve. Bei svnserve hat man die Wahl, ob svnserve
als standalone Server laufen soll, in Verbindung mit ssh oder über inetd.
1.1. Konfiguration von inetd Folgende Zeile in inetd.conf wird verwendet: svn stream tcp nowait svn.svn /usr/bin/svnserve svnserve -i -r /pfad/zu/den/Repositories Das erste 'svn' gibt den Service an und muss in /etc/services definiert sein. Der Port
für Subversion ist 3690.
In der fünften Spalte wird der Benutzer und die Gruppe angegeben mit der das Programm in
aus der sechsten Spalte gestartet werden soll.
Die Parameter von svnserve: 1.2. Anlegen der Repositories Bevor man auf ein Repository zugreifen kann, muss dieses lokal auf dem Server erstellt werden. Dies geschiet mit dem Befehl svnadmin: $ svnadmin create /pfad/zu/dem/Repository z.B. svnadmin create /opt/svn/lughp Der Pfad muss dabei unterhalb des Pfades liegen, der svnserve mit dem Parameter '-r' übergeben wurde. Ansonsten kann nicht darauf zugegriffen werden. Ausserdem müssen die Rechte des Repositories noch auf den Benutzer und die Gruppe svn geändert werden, da svnserve diese ansonsten evtl. nicht lesen darf. 1.3. Konfiguration der Repositories Für jedes Repository können getrennt die Zugriffsberechtigungen konfiguriert werden. Die Konfiguration dazu liegt im Unterverzeichnis 'conf' des Repositories. Aufbau der Datei svnserve.conf: [general] anon-access = [none, read, write] auth-access = [none, read, write] password-db = [Dateiname]
'anon-access' legt fest, welche Operation ohne Anmeldung erlaubt sind. (keine, nur lesen oder Vollzugriff) Aufbau der Passwort Datei: [users] username = passwort ... 1.4. URL für ein Repository Die URL zum Zugriff auf die Repositories sieht wie folgt aus: svn://name.des.servers/pfad/zum/repository z.B. svn://lug-untermain.de/lughp Der Pfad ist dabei relativ zu dem Pfad, der in der inetd.conf angegeben wurde.
Beispiel: 2. Verwendung eines Repositories In einem Repository werden alle alten Version der verwalteten Dateien aufbewahrt und können immer wieder hergestellt werden. Daher kann nicht direkt mit dem Repository gearbeitet werden, sondern jeder Entwickler braucht eine eigene Arbeitskopie in der die eigentliche Arbeit vorgenommen wird. Die eigenen Änderungen sollten immer in logisch zusammenhängenden Teilen an das Repository übertragen (commit) werden. Die im folgenden angegeben Befehle werden immer im Wurzelverzeichnis der eigenen Arbeitskopie ausgeführt. 2.1. Importieren vorhander Dateien Um ein bestehendes Projekt in ein neues, leeres Repository einzufügen, kann der Befehl import verwendet werden: $ svn import Pfad URL z.B. svn import /tmp/html svn://lug-untermain.de/lughp Pfad: Verzeichnis in dem das Projekt liegt 2.2. Erstellen der Arbeitskopie Um mit der eigentlich Arbeit beginnen zu können muss zu erst eine Arbeitskopie des Repositories erstellt werden. Hierzu dient der Subversion Befehl 'checkout' (oder in kurz: 'co'): $ svn checkout URL [Pfad] oder: $ svn co URL [Pfad] z.B. svn co svn://lug-untermain.de/lughp /home/tux/html URL: Adresse des Repositories 2.3. grundlegender Arbeitszyklus Wenn eine Arbeitskopie erstellt wurde sieht der weiter Arbeitsablauf wie folgt aus:
2.3.1. Aktualisieren der Arbeitskopie Um die Änderungen im Repository in die eigene Arbeitskopie zu übernehmen, wird diese mit dem Befehl 'update' auf den neusten Stand gebracht. $ svn update Wenn dabei lokale Änderungen vorhanden sind, werden diese, soweit möglich, automatisch mit den Änderungen aus dem Repository kombiniert. Ist dieser Vorgang nicht automatisch möglich liegt ein sogenannter Konflikt vor, der manuell behoben werden muss. Dazu aber später mehr. 2.3.2. Vornehmen eigener Änderungen Alle Dateien können normal editiert werden und diese Änderungen werden von Subversion automatisch erkannt. Sollen hingegen neue Dateien hinzugefügt werden, wird diese zuerst normal erstellt, aber anschliessend muss man Subversion mitteilen, dass diese Datei auch verwaltet werden soll. Hierzu dient der Befehl 'add'. $ svn add Datei|Pfad Neue Verzeichnisse werden mit dem Befehl 'mkdir' erstellt. $ svn mkdir Pfad Löschen geht ebenfalls nur über Subversion, ansonsten wird die Datei beim nächsten update wieder hergestellt. $ svn remove Datei|Pfad Sollen Dateien kopiert oder verschoben werden, sollten auch die Subversion Befehle hierzu verwendet werden, da ansonsten die History der Dateien verloren gehen. $ svn copy Quelle Ziel $ svn move Quelle Ziel Alle Änderungen durch diese Befehle wirken sich sofort auf die Arbeitskopie aus, werden aber erst beim nächsten 'commit' an das Repository übertragen. 2.3.3. Überprüfen der Änderungen Die Änderungen an der Arbeitskopie lassen sich mit dem Befehl 'status' anzeigen. $ svn status Die Ausgabe listet alle Dateien und Verzeichnisse auf, die geändert, neu hinzugefügt oder gelöscht worden sind. Alle diese Änderungen werden bei einem 'commit' an das Repository übertragen. Sollen Änderungen an einer Datei rückgängig gemacht werden, kann der Befehl 'revert' verwendet werden. $ svn revert Datei Dies stellt die Datei wieder mit dem ürsprünglichen Inhalt her. Alle lokalen Änderungen sind verloren. 2.3.4. Beheben von Konflikten Ist beim 'update' ein Konflikt aufgetreten, muss dieser erst behoben werden bevor ein 'commit' möglich ist.
Von der Datei, die den Konflikt erzeugt liegen 4 Version in der Arbeitskopie vor: 2.3.5. Übertragen der Änderungen Sind alle Konflikte behoben können die lokalen Änderungen mit 'commit' an das Repository übertragen werden. Jeder commit kann mit einem Logeintrag dokumentiert werden, damit die anderen Entwickler schnell sehen, was in diesem commit enthalten ist. $ svn commit -m "Log Meldung" [Dateien] Wird der Parameter mit den Dateien weggelassen, werden alle Änderungen, die im aktuellen Verzeichnis und dessen Unterverzeichnis sind, übertragen. Ansonsten nur die Änderungen an den angegeben Dateien. 3. weitere Quellen zu Subversion [1] Das freie Subversion Buch: http://svnbook.red-bean.com Klaus Flittner |
Nächster Stammtisch
News |