Für Vereinsmitglieder bietet der KNF die Möglichkeit, Subversion-Repositories anzulegen und hierüber Code-Verwaltung und Austausch zu betreiben. Voraussetzung ist neben der Mitgliedschaft im Verein, sowie potentiell der Client-Software, ein Account auf dem Shell Server.

 

Wenn diese Anforderungen erfüllt sind, kann mit einer formlosen Mail an den KNF Support die Einrichtung eines Subversion-Pfades angefragt werden. Unterhalb dieses Pfades können unter eigener Verwaltung Repositories angelegt, Nutzer für den http(s)-Zugriff eingerichtet und Zugriffsrechte vergeben werden.

 

 

Anlegen eines Repositories

Nachdem durch den KNF ein Basis-Pfad für Subversion angelegt wurde, ist die Erzeugung von eigenen Repositories unter diesem Pfad möglich. In der Regel wird dieser Pfad "/svn/SITENAME" lauten.

 

Um einen späteren Zugriff über http(s) zu erlauben, muss beim Anlegen von Repositories allerdings auf die Vergabe der Zugriffsrechte geachtet werden. Zwar wird alle 60 Minuten eine automatische Anpassung der Zugriffsrechte vorgenommen, jedoch ist gerade für das erste Testen eine korrekte Initialisierung hilfreich.

 

Für diesen Schritt ist es zwingend erforderlich auf dem Shell-Server eingeloggt zu sein.

 

    shell:~> umask 002
    shell:~> svnadmin create --fs-type fsfs /svn/SITENAME/projekt1
    shell:~> umask 022

 

Nachdem obige Kommandos ausgeführt wurden, ist auf dem Server das Repository "projekt1" angelegt aber es enthält noch keine Daten. Diese können wie gewohnt in das Projekt eingepflegt werden, zum Beispiel über die svn+ssh Zugriffsmethode.

 

    home:~> svn import -m "erster import" ~/beispiel/ svn+ssh://SITENAME@shell.franken.de/svn/SITENAME/projekt1/trunk
    Adding         /Users/joerg/beispiel/main.c
    Adding         /Users/joerg/beispiel/functions.c
    Adding         /Users/joerg/beispiel/README.txt
    Adding         /Users/joerg/beispiel/functions.h
 
    Committed revision 1.

 

 

Zugriff über http(s)

Bis zu dieser Stelle wäre das Anlegen eines Respositories auch ohne weitere Unterstützung des KNFs möglich gewesen. Aber oft will man Code zusammen mit weiteren Entwicklern pflegen und hierfür ist die svn+ssh Zugriffsmethode regelmässig nicht ausreichend. Zudem müssten alle an einem Projekt beteiligten Nutzer ssh-Zugriff auf den KNF Shell-Server haben und somit den Mitgliedsstatus besitzen.

 

Kann hingegegen über http(s) (WebDAV) mit dem Repository gearbeitet werden, ist nicht für alle Beteiligten ein ssh-Zugriff nötig, es reicht aus wenn der Eigentümer (als KNF-Mitglied) dazu in der Lage ist.

 

Der erste Schritt um den http(s)-Zugriff zu ermöglichen, besteht darin, einen Nutzer für die Repositories in einer Passwort-Datei anzulegen. Alle hier eingetragenen Nutzer können auch auf alle Repositories zugreifen, da es pro Mitglied nur eine Passwort-Datei gibt. Zudem muss über eine "access"-Steuerung festgelegt werden, welche Zugriffsrechte die angelegten Nutzer haben.

 

Im folgenden Beispiel wird im Home-Verzeichnis des Eigentümers die Passwort-Datei ~/.svn-passwd neu angelegt und der Nutzer "joerg" eingetragen, das zweite Kommando fügt den Nutzer "thomas" zu der bereits existierenden Datei hinzu.

 

     shell:~> htpasswd2 -c ~/.svn-passwd joerg
     New password: 
     Re-type new password: 
     Adding password for user joerg

 

     shell:~> htpasswd2 ~/.svn-passwd thomas
     New password: 
     Re-type new password: 
     Adding password for user thomas

 

Nun ist es noch nötig, die Zugriffsrechte der angelegten Nutzer festzulegen. Zum Beispiel soll unauthentisierten Nutzern generell der Zugriff verweigert werden, lediglich auf das Repository "projekt1" soll jedermann Lesezuriff sowie den Nutzern "joerg" und "thomas" auch Schreibzugriff gewährt werden. Hierzu muss die Daten ~/.svn-access wie folgt angepasst werden:

 

    # Default fuer alle nicht explizit konfigurierten Repositories:
    #
    # kein Zugriff ausser fuer joerg
    [/]
    * =
    joerg = rw

 

    # Ueberschreiben von Zugriffsrechten auf das Repository "projekt1":
    #
    # jedermann darf Lesend zugreifen, die Nutzer "joerg" und "thomas"
    # duerfen auch Daten veraendern bzw. anlegen. Jedermann bedeutet
    # auch unauthentisierte Nutzer, also http-Zugriffe ohne Login + Passwort
    [projekt1:/]
    * = r
    joerg = rw
    thomas = rw

 

Mit Hilfe der angelegten User-Accounts ist es nun möglich, auf das SVN-Repository zuzugreifen, zum Beispiel um die bereits importierten Daten vom Server in das Verzeichnis "projekt1" zu holen:

 

    home:~> svn checkout --username joerg http://shell.franken.de/svn/SITENAME/projekt1/trunk projekt1
    Authentication realm: <http://shell.franken.de:80> SITENAME Subversion Repository
    Password for 'joerg': 
    Checked out revision 1.

 

Wurden in der Zugriffsdatei Leserechte für jedermann eingetragen, kann auf die Angabe des --username verzichtet werden. Lediglich beim schreibenden Zugriff auf das Repository sollte immer eine restriktive Liste von Nutzern einen Missbrauch des Dienstes einschränken.