"Subversion (SVN) ist eine Open-Source-Software zur Versionsverwaltung. (...) Subversion wurde als moderne Ablösung für das mit vielen Schwächen behaftete, in Entwicklerkreisen trotzdem noch sehr verbreitete, Programm CVS entwickelt." [Quelle: Wikipedia]

Endlich ein neues Tutorial . Es wurde bereits von jemandem angefragt, daher will ich es nun endlich zum Urlaubsbeginn umsetzen. Kommt noch dazu, dass ich für meine Projekte langsam wirklich eine Versionskontrolle brauche...
HINWEIS: Ich zeige dir hier wie man Subversion mit dem "svnserve" betreibt, also NICHT mit Apache2. Warum nicht? Nun, für meine Bedürfnisse reicht svnserve aus und ich will keinen (für mich überflüssig) resourcenfressenden Dienst auf meinem Server laufen lassen.

Einen Grundlagenartikel von Florian Wörter findest du unter "SVN: Grundlagen & Hintergründe".

  1. Zunächst, nachdem der Portstree aktualisiert wurde, installieren wir den Subversion-Server:

    # cd /usr/ports/devel/subversion/ && make install clean

    Bei der Konfiguration von Phyton habe ich folgende Parameter gewählt:
    • THREADS
    • UCS4
    • PYMALLOC
  2. Das dauert nun eine Weile, vor allem wenn du den Subversion-Server in einer frischen Jail betreibst, denn dann wird noch ein ganze Haufen Software ausrum kompiliert.
    Anschließend legen wir eine Benutzergruppe und einen Benutzer an, unter denen der SVN-Server später läuft. Ich nenne sie "svn" und gebe dem Benutzer keine besonderen Rechte:

    Gruppe: # pw groupadd svn

    Benutzer: # adduser svn

    Für den Benutzer verwende ich folgende Einstellungen:
    • Password-base authentication: no
    • Group: svn
    • Shell: /usr/sbin/nologin
    • Home: /usr/local/svnrepos
  3. Wie nach jeder Installation von Diensten, müssen wir nun noch ein paar Parameter in die "/etc/rc.conf" eintragen:

    svnserve_enable="YES"
    svnserve_flags="-d --listen-port=3690"
    svnserve_data="/usr/local/svnrepos"
    svnserve_user="svn"
    svnserve_group="svn"

    • svn_flags: Das "-d" bedeutet, dass der Server im Hintergrund als Daemon läuft. Man kann ihn aber auch über inetd laufen lassen, aber ich bevorzuge meine Variante.
      --listen-port legt fest, auf welchem Port der Server lauschen soll. 3690 ist der Standardwert. Vergiss nicht diesen Port in der Firewall freizugeben, wenn du von außen drauf zugreifen willst.
    • svnserve_data: Das ist das Verzeichnis, in dem die Repositories (also die Daten der Projekte wenn du so willst) abgelegt werden. Du kannst auch nen anderen Pfad wählen. Dieser Parameter "sperrt" den SVN-Server auch gleichzeitig in diesem Verzeichnis ein.
    • svnserve_user/group: Sollte klar sein, sind der Benutzername und der Gruppenname unter denen der SVN-Server läuft.