SVN Server Aufsetzen   

Ich habe viele Anleitungen gefunden wie man solch einen Subversion (SVN) Server aufsetzt, allerdings keine, die die Zugriffssteuerung so verwaltet, dass die verschiedenen Bereiche (Repositories) von unterschiedlichen Leuten mit unterschiedlichen Rechten bearbeitet können.
Ich werde das mit den folgenden Absätzen erlären.

SVN kennt ein eigenes Protoll, mit dem man auf einen SVN Server zugreifen kann. Dieses wird aber mittlerweile von vielen Firewalls gesperrt, weil die Firmen dazu übergehen ausgehend auch nur wenige Ports zuzulassen. Was immer funktionieren muss ist Port 80 (HTTP), welcher für den Zugriff auf Webseiten notwendig ist.
Was liegt also näher, über den HTTP Port auch den Zugriff auf das SVN Repository herzustellen. Die SVN Entwickler haben das auch in die Tat umgesetzt.

Man braucht also zuerst einen Apache basierten WEB Server. Diesen kann man als echten oder virtuellen Server mieten. Man braucht sich in der Regel auch nicht mit dem Installieren der Server Software auseinander setzten. Ich verweise hier einfach mal auf GOOGLE.

Zuerst sollte man einmal das lesen.
Unter "Apache HTTP Server einrichten" wird empfohlen eine Datei "subversion.conf" via "httpd.conf" oder "apache2.conf"(Debian) in die Konfiguration einzubinden. Damit ist man aber sehr beschränkt in den Möglichkeiten, die einem der WEB Server bietet. Ich habe das mal versucht, aber war damit nicht zufrieden, weshalb ich nach einer Lösung via normaler URL Konfiguration im Apache geforscht habe.

Hier eine Kurzfassung von mir (alles als root auszuführen):

Pakete installieren:
  apt-get install subversion subversion-tools libapache2-svn

Directory /home/svn anlegen:
  mkdir /home/svn

Dummy User für svn:
  useradd -d /home/svn -c 'svn-server service' -r -s /bin/false svn

Directory nur für SVN User zugänglich machen:
  chown -R svn.svn /home/svn

Neue Verzeichnisse und Files sollen immer der SVN User Gruppe gehören:
  chmod -R g+s /home/svn

Im Folgenden "repo1" natürlich mit seinem eigenen Repository ändern.
Ein Repository anlegen:
  svnadmin create /home/svn/repo1

Der owner des Repositories muss der SVN User sein:
  chown -R svn.svn /home/svn/repo1

Pakete für den WEB Zugriff installieren:
  apt-get install enscript websvn

Beim letzten Installationsschritt wird man nach dem SVN Verzeichnis gefragt. Hier muss man "/home/svn" angeben, damit es auf Anhieb funktioniert. Durch die Angabe der Wurzel aller Repositories, können in Zukunft weitere angelegt werden und erscheinen dann automatisch in der WEB Oberfläche.
Sollte etwas nicht funktionieren, dann muss man im Verzeichnis "/etc/websvn" mal nach dem Rechten sehen.
Bei mir sieht das dann so aus.


Jetzt kann man sich zwar das Reposity anschauen, aber noch nichts ein- oder auschecken. Dazu muss jetzt der Zugriff via HTTP oder HTTPS konfiguriert werden.

In Verzeichnis "/etc/apache2/sites-available" speichert der Apache WEB Server die Konfigurationsdateien für die diversen WEB Seiten. Dort muss man eine Datei "subversion" anlegen. Hier ist mein Muster.
Wichtig sind dabei:
   "ServerName svn.anw.at" ... beliebige URL
   "AssignUserId svn svn" ... Sicherheit, weil der Zugriff nur als User svn erfolgt

Wenn man hier mehrere Repositories, verwalten möchte, dann braucht man nur entsprechend mehrere    <location repoX>    </location>
Blöcke in die Datei zu schreiben, die jeweils auf ein eigenes Repository zeigen. Man erhät dadurch pro Repository eigene Dateien für die Authentifizierung und kann somit sehr einfach unterschiedliche Teams an den unterscheidlichen Projekten arbeiten lassen.

Damit Apache diese neue Seite auch anzeigt, muss in "/etc/apache2/sites-enabled" ein symbolic link auf die Datei in "/etc/apache2/sites-available/subversion" erstellt werden. Jetzt muss man die Konfiguration des WEB Servers neu laden.
Das geht mit   "/etc/init.d/httpd reload"    oder    "apachectl -k graceful"
Damit ist die WEB Server Konfiguration fertig und wir können mit der dem SVN WEB Dav Modul weiter fortfahren.

Jedes SVN Repository enthält ein Verzeichnis mit dem Namen "conf". Dort befinden sich die Steuerdateien. In unserem Beispiel wäre das "/home/svn/repo1/conf". Das Beste ist die Dokumentation zu studieren.
Die Datei "authz" definiert für jeden user, oder Gruppen von Usern die Zugriffsrechte und die Datei http.passwd enthält die notwendigen Passwörter dazu.

Damit müsste bereits der Zugriff via Browser möglich sein. Hier kann man sich mein SVN Repository anschauen. Sieht nach wenig aus, also wie ein Browser listing (ist es ja auch), aber im Hintergrund werkelt das Apache SVN Modul und berücksichtigt schon die Zugriffsrechte.

Der Zugriff kann von der Kommandozeile aus mit dem Programm "svn" erfolgen, oder mit dem Windows Programm TortoiseSVN, oder vielen anderen.
Wenn man anonym zugreifen will, dann geht das per HTTP. Wenn man etwas einchecken möchte, würde ich HTTPS empfehlen, damit das Passwort verschlüsselt übertragen wird.
Die URL zu meinem Repository ist https / http://svn.anw.at/avr32-toolchain/trunk


Die offizielle Webseite des (Apache) SVN Projekts