SVN-Server installieren

Aus

SVN (Subversion) auf der DS

Subversion ist eine Codeverwaltung, die das gemeinsame Arbeiten an gleichen Codes wesentlich vereinfacht. Subversion übernimmt hierbei das Versionsmanagement der Codes.

Installation

Voraussetzungen

IPKG SVN Pakete installieren

Auf der DiskStation IPKG Pakete aktualisieren und das Paket SVN installieren.

$ ipkg update
$ ipkg install svn

Netzwerkfreigabe und Synology-Benutzer anlegen

Im Disk Station Manager (Web GUI) mit Hilfe von Volume Managers eine neue Netzwerkfreigabe Namens "svn" erstellen.

Einen neuen Synology Benutzer Namens "svnowner" ohne Passwort anlegen und ihm Schreib-Leserechte für das Verzeichnis "svn" freigeben. Für den Benutzer sollen am besten alle weiteren Freigaben versperrt bleiben. Zur Not müssen die Rechte nachträglich angepasst werden. Oft sind die falschen Rechte ein Grund dafür, dass der Server nicht startet.

Neus SVN Repository anlegen und konfigurieren

Einloggen mit Putty als root mit Adminpasswort.

Die Prozentzeichen (%...%) deuten auf eine Variable die Sie entsprechend Ihren Bedürfnissen jedoch ohne Prozentzeichen ersetzen sollen.

login as: root
password: %Adminpasswort%

Wechseln ins Verzeichnis /volume1/svn

cd /volume1/svn


Das SVN-Verzeichnis erstellen. "unser_svn_repo" ist der Name von unserem neuen Repository.

svnadmin create /volume1/svn/%unser_svn_repo%

Benutzerrechte für das Verzeichnis /volume1/svn/%unser_svn_repo% anpassen. Rechte mit dem Befehl "dir" überprüffen. Alle Dateuen sollen dem User "svnowner" und der Gruppe "users" gehören.

chown svnowner:users -R %unser_svn_repo%
dir

In das Verzeichnis /volume1/svn/%unser_svn_repo% wechseln. Eventuell die Struktur wieder mit dem Befehl "dir" kontrolieren.

cd %unser_svn_repo%
dir

In das Unterverzeichnis "conf" in unserem neu erstellten SVN-Repository wechseln. Wieder mit "dir" die Struktur Prüfen.

cd conf
dir

Datei mit der Benutzerdatenbank "/volume1/svn/%unser_svn_repo%/conf/passwd" mit dem Editor VI öffnen.

Bemerkung: Die Konfigurationsdateien können auch in dem freigegebenen Ordner "svn" mit einem Windows-Editor wie Notepad++ bearbeitet werden.

vi passwd

In die Datei 'passwd' zukünftige SVN-Benutzer eintragen. Im Klartext User und Passwort der Benutzer für das Repository eingeben.

%mein_svn_user1% = %testpw123%
%mein_svn_user2% = %testpw123%
...

Editiermodus verlassen, in den Befehlsmodus wechseln.

Taste "ESC"

Datei speichern und VI-Editor verlassen (write & quite).

:wq

Für begrenzte Schreib/Leserechte der Datei "passwd" sorgen.

chmod 600 passwd

Konfigurationsdatei des neuen SVN Repository "/volume1/svn/%unser_svn_repo%/conf/svnserve.conf" mit dem Editor VI anpassen.

vi svnserve.conf

Editor VI in den Editiermodus umschalten.

i

Folgendes auskommentieren bzw. ergänzen:

  1. Rechte für anonyme Benutzer einschränken.
  2. Angemeldeten Benutzern den Zugang erlauben.
  3. Bezeichnung der Passwortdatei in der die Benutzer aufgelistet sind.
  4. Bezeichnung des Repository - optional
anon-access = none
auth-access = write
password-db = passwd
realm = Mein Repository

Editiermodus verlassen, in den Befehlsmodus wechseln.

Taste "ESC"

Datei speichern und VI-Editor verlassen (write & quite).

:wq

Das Repository ist nun einsatzbereit. Der Server muss noch konfiguriert werden.

Konfiguration des Servers

Einrichtung von inet-Daemon

Mit dem Editor VI die Datei /etc/inetd.conf bearbeiten:

vi /etc/inetd.conf

Folgende Zeile einfügen

svn stream tcp nowait svnowner /opt/bin/svnserve svnserve -i -r /volume1/svn

Speichern und schließen:

: wq

Datei "services" anpassen

Mit dem Editor VI die Datei /etc/services bearbeiten:

vi /etc/services

Am Ende folgende Zeilen einfügen:

svn             3690/tcp                        #Subversion
svn             3690/udp                        #Subversion

Speichern und schließen:

: wq

Neustart

Nach der Installation ist ein Neustart der DiskStation erforderlich. Das geht manuell per WebGUI oder mit dem Befehl:

reboot

SVN auf Arbeitscomputer aufrufen

Am besten geht das mit dem Programm Tortoise. Es ist ein mächtiges Werkzeug, ist kostenlos und kann einfach runterladen und auf den Arbeitscomputer installieren werden.

Nach dem Tortoise auf Ihrem Arbeitscomputer installiert ist kann man per Rechtsklick auf dem Desktop oder Datei das Kontextmenü aufrufen und dort den Punkt "SVN Checkout" aufrufen. Man wird nach dem Benutzernamen und Passwort gefragt. Hier geben Sie den Benutzernamen denn Sie in der Datei mit der Benutzerdatenbank /volume1/svn/%unser_svn_repo%/conf/passwd eingetragen haben.

Der SVN-Pfad den man eingeben muss lautet folgendermaßen:

svn://%ip_von_DS%/%unser_svn_repo%

Anschließend wird der Ordner an der entsprechenden Stelle erzeugt und ihr könnt damit arbeiten.

SVN Reporitory löschen

Wird ein SVN Repository nicht mehr benötigt kann es mit dem einfachen Befehl "rm -r %unser_svn_repo%" gelöscht werden. Das Löschen über die Netzwerkfreigabe reicht ebenfalls aus.

In das SVN Verzeichnis wechseln. Verzeichnisstruktur mit "dir" kontrolieren. Nicht mehr benötigtes Repository löschen.

cd /volume1/svn
dir
rm -r %unser_svn_repo%"

Mit dem SVN Repository auf einen Ort umziehen

Beim Systemwechsel, Neuinstallation der DiskStation OS ist es notwendig das Repository zu sichern und wieder neu einzuspielen.

Mit dem Bfehl "svnadmin dump..." wird eine Kopie des SVN Repository erstellt. bei dem beispiel wird die Dump-datei im vorher freigegebenen Ordner "public" gespeichert.

svnadmin dump /volume1/svn/%unser_svn_repo% > /volume1/public/%unser_svn_repo%.dump

Wiederherstellen auf dem neuen Ort geht mit dem Befehl "load". Das Ziel SVN Repository "unser_svn_repo" muss bereits existieren.

svnadmin load /volume1/svn/%unser_svn_repo% < /volume1/public/%unser_svn_repo%.dump

Probleme und Bemerkungen der User

Einmaliges Starten des Servers, geht bei Neustart verloren. Auf Konsole aufrufen:

svnserve -d -r %unser_svn_repo%

Start des SVN-Servers bei Systemstart:

Nach dieser Anleitung vorgehen und in das eigene Bootscript obigen Code einfügen.

Vorbemerkung: SVN ist erfahrungsgemäß recht ressourcenhungrig. Darum ist es sinnvoller den SVNserver-Daemon nicht die ganze Zeit am Laufen zu haben, sondern nur zu starten, wenn er benötigt wird. Das funktioniert unter Linux/Unix mit dem inet-Daemon. (...kann ich nicht bestätigen)

Bei mir funktionierte der Start mittels inetd nicht auf Anhieb. Das Problem wurde anscheinend auch hier beschrieben. Es half den inet-Daemon neu zu starten:

/usr/syno/etc/rc.d/S03inetd.sh stop
/usr/syno/etc/rc.d/S03inetd.sh start

Links