Subversion: Unterschied zwischen den Versionen

Aus schokokeks.org Wiki
Zur Navigation springen Zur Suche springen
Aktuelle IP-Adressen im Beispiel
 
(13 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Category:Subversion]]
[[Category:Webserver]]
Subversion ist ein sog. Version-Kontrollsystem. Diese Systeme sind dazu gedacht, einen Datenbestand (meistens Programmcode oder Text-Dokumente) zu verwalten und Änderungen zu dokumentieren. Damit können z.B. mehrere Autoren an einem Programm schreiben und es ist jederzeit möglich, einzelne Änderungen zu verfolgen oder rückgängig zu machen.
Subversion ist ein sog. Version-Kontrollsystem. Diese Systeme sind dazu gedacht, einen Datenbestand (meistens Programmcode oder Text-Dokumente) zu verwalten und Änderungen zu dokumentieren. Damit können z.B. mehrere Autoren an einem Programm schreiben und es ist jederzeit möglich, einzelne Änderungen zu verfolgen oder rückgängig zu machen.


Zeile 21: Zeile 23:
Bei uns ist die Vorkehrung vorhanden um Subversion über [[WebDAV]] zu betreiben. Webdav erweitert das normale HTTP-Protokoll um eine direkte Upload-Fähigkeit und einige andere Techniken zur Datei-Manipulation. Das Subversion-Modul im Webserver sorgt nun einerseits dafür, dass das Subversion-Programm direkt mit dem Server kommunizieren kann und dort die Änderungen verwaltet werden, andererseits besteht aber zudem die Möglichkeit mit einem ganz normalen Browser auf den jeweils aktuellen Stand des Repositories zuzugreifen. Dieses Feature ist besonders interessant, wenn neben den Autoren der Daten auch Besucher einzelne Daten herunterladen können sollen (das ist natürlich konfigurierbar), denn diese brauchen dann keine weitere Software als einfach den Browser. Ob man für den Zugriff Benutzernamen und Passwort eingeben muss lässt sich frei konfigurieren.
Bei uns ist die Vorkehrung vorhanden um Subversion über [[WebDAV]] zu betreiben. Webdav erweitert das normale HTTP-Protokoll um eine direkte Upload-Fähigkeit und einige andere Techniken zur Datei-Manipulation. Das Subversion-Modul im Webserver sorgt nun einerseits dafür, dass das Subversion-Programm direkt mit dem Server kommunizieren kann und dort die Änderungen verwaltet werden, andererseits besteht aber zudem die Möglichkeit mit einem ganz normalen Browser auf den jeweils aktuellen Stand des Repositories zuzugreifen. Dieses Feature ist besonders interessant, wenn neben den Autoren der Daten auch Besucher einzelne Daten herunterladen können sollen (das ist natürlich konfigurierbar), denn diese brauchen dann keine weitere Software als einfach den Browser. Ob man für den Zugriff Benutzernamen und Passwort eingeben muss lässt sich frei konfigurieren.


Im folgenden werde ich technisch beschreiben, wie der Subversion-via-Webdav-Zugriff eingerichtet werden kann. Beachten Sie, es ist noch nicht möglich, diese Änderungen vollständig selbst durchzuführen, ein Administrator muss die Konfiguration des Webservers darauf anpassen (s. unten). Bitte melden Sie sich also bei einem Administrator nachdem die Vorbereitungen erfüllt sind.
Im folgenden werde ich technisch beschreiben, wie der Subversion-via-Webdav-Zugriff eingerichtet werden kann.
 


=Einrichtung des Webdav-Zugriffs=
=Einrichtung des Webdav-Zugriffs=


Bitte lesen Sie zum Verständnis auch den Artikel zu [[WebDAV|WebDAV im allgemeinen]]. Es werden trotzdem alle Schritte hier nochmals erklärt.
==Vorbereitung==
 
Zuerst sollten Sie die passenden Pfade und Dateien in Ihrem Benutzeraccount erstellen.
 


==Vorbereitung==
===Pfade===
 
Um den Aufwand für beide Seiten minimal zu halten und Missverständnisse und Verwirrung zu minimieren, werden bei uns die Pfade nach untenstehendem Schema angenommen. Abweichende Konfigurationen sind technisch möglich, aber mit erheblichem Mehraufwand verbunden.


Auch als einfacher Benutzer können Sie schon vieles selbst vorbereiten. Dazu brauchen Sie nur einen SSH-Zugang.
Hier in dieser Anleitung will der Benutzer ''bernd'' unter der Subdomain ''svn.bwurst.org'' ein Subversion-Repository betreiben. Wann immer die Pfade diese Teile enthalten, sollte das bei Ihnen durch den zu verwendenden Namen ersetzt werden.


===Repository erstellen===


Als erster Schritt muss ein Repository erstellt werden. Wechseln Sie dazu in ein dafür vorgesehenes Verzeichnis (oder erstellen Sie eines). In diesem Beispeil werde ich davon ausgehen, dass das Repository in dem Verzeichnis ''/home/bernd/subversion/repositories'' erstellt wird und den Name '''test''' trägt. Dieses Repository ist nur zu Test-Zwecken notwendig. Es kann später auch wieder gelöscht werden, wenn es nicht gebraucht wird. Der Subversion-Server arbeitet nach dem Prinzip, dass man ein Verzeichnis vorgibt, in dem sich dann mehrere Repositories befinden können. Man sollte also zwingend ein spezielles Verzeichnis nur für Subversion-Repositories vorsehen.
===Vorbereitungen===


Zusätzlich werden später noch zwei Dateien gebraucht, die ebenfalls zum Subversion-System gehören, jedoch nicht in diesem repositories-Verzeichnis sein sollten. Es empfiehlt sich also, zwei Verzeichnisebenen anzulegen, wie in diesem Beispiel. Wo sich diese befinden ist zwar letztlich egal, nur muss der Webserver ein Zugriffsrecht auf alle Verzeichnisse bekommen, die er durchqueren muss.
Als erster Schritt muss das Subversion-Unterverzeichnis im Benutzer-Home-Verzeichnis angelegt werden:


Ich muss für obiges Beispiel nun also folgende Befehle ausführen:
mkdir ~/subversion


Erstellen des Verzeichnisses:
Dort wird dann für die passende Subdomain ein Daten-Verzeichnis angelegt:
mkdir -p /home/bernd/subversion/repositories


Setzen der Standard-Rechte, alle Daten die dort ab sofort abgelegt werden, sollen für den Webserver lese- und schreibbar sein:
  mkdir ~/subversion/svn.bwurst.org
  setfacl -m default:u:apache:rwx /home/bernd/subversion/repositories


Erstellen des Repositories:
Damit der Webserver dieses Verzeichnis benutzen kann, muss man ihm das '''x'''-Recht einräumen:
cd /home/bernd/subversion/repositories
svnadmin create test


Dem Webserver das Recht geben, dieses Verzeichnis auch zu betreten:
  setfacl -m u:apache:x /home/bernd /home/bernd/subversion /home/bernd/subversion/svn.bwurst.org
  setfacl -m u:apache:x /home/bernd /home/bernd/subversion /home/bernd/subversion/repositories
(Hierbei ist wichtig, dass der Webserver auf ''alle'' Zwischen-Ebenen mindestens ein '''x'''-Recht bekommt um das Verzeichnis zu durchqueren.)
(Hierbei ist wichtig, dass der Webserver auf ''alle'' Zwischen-Ebenen mindestens ein '''x'''-Recht bekommt um das Verzeichnis zu durchqueren.)


Danach müssen wir zwei Dateien erstellen, deren Inhalt später erklärt wird. Hier müssen Sie nur erstellt werden, damit wir deren Rechte korrekt setzen können:
Der Subversion-Server arbeitet nach dem Prinzip, dass man ein Verzeichnis vorgibt, in dem sich dann mehrere Repositories befinden können. Zusätzlich werden noch zwei Dateien gebraucht, die ebenfalls zum Subversion-System der betreffenden Subdomain gehören, jedoch nicht in diesem repositories-Verzeichnis sein sollten:  
  touch /home/bernd/subversion/users /home/bernd/subversion/acl
 
  setfacl -m u:apache:r /home/bernd/subversion/users /home/bernd/subversion/acl
mkdir ~/subversion/svn.bwurst.org/repositories
  touch ~/subversion/svn.bwurst.org/acl
touch ~/subversion/svn.bwurst.org/users
 
Für diese zwei Dateien und das Repositories-Verzeichnis müssen wir ebenfalls die Rechte verteilen:
 
setfacl -m u:apache:rx ~/subversion/svn.bwurst.org/repositories
setfacl -m u:apache:r ~/subversion/svn.bwurst.org/acl
  setfacl -m u:apache:r ~/subversion/svn.bwurst.org/users
 
Damit der Apache in allen neuen Repositories automatisch das Recht erhält, beliebig zu lesen und zu schreiben, setzen wir noch das hier:
 
setfacl -m default:u:apache:rwx ~/subversion/svn.bwurst.org/repositories
 
Zudem setzen wir das folgende, damit der Benutzer selbst die Dateien wieder verändern und z.B. löschen kann (''bernd'' bitte durch den eigenen Benutzernamen ersetzen):
 
setfacl -m default:u:bernd:rwx ~/subversion/svn.bwurst.org/repositories
 
Nach dieser Vorbereitung kann das SVN-Repository über das Konfigurationsinterface aktiviert werden.
 
===Repository erstellen===
 
Nach dieser Vorbereitung kann man dann das wirkliche Daten-Repository erstellen.


Nun ist das Erstellen der Daten abgeschlossen und theoretisch kann nun schon der Administrator die Einträge im Webserver vornehmen. Er braucht dazu:
Erstellen des Repositories »''test''«:
cd ~/subversion/svn.bwurst.org/repositories
svnadmin create test


* die '''Web-Adresse''', unter der das Repository erreichbar sein soll
{{AlertBox
* den '''kompletten Pfad''' zum Repository (in diesem Beispiel /home/bernd/subversion/repositories)
|title=Fehler im aktuellen Subversion
* die Dateinamen und Pfade der
|content=Der Befehl ''svnadmin create'' setzt sich in der aktuellsten Version leider beim erstellen einer Datei über die Default-ACL hinweg und erzeugt eine Datei die der Webserver nicht schreiben darf. Zur Lösung des Problems bitte diesen Befehl (mit angepasstem Pfad für ''test'') zusätzlich ausführen:
** '''users'''- und  
setfacl -m u:apache:rw test/db/rep-cache.db
** '''acl'''-Datei.  
}}
* eine kurze Mitteilung, ob das Repository grundsätzlich auch '''anonym erreichbar''' sein soll (der anonyme Zugriff kann dann mithilfe der ''acl''-Datei für einzelne Pfade wieder entzogen werden. Siehe nächsten Abschnitt)


Es ist sowohl möglich, einen eigenen Host-Eintrag einzurichten (z.B. ''svn.schokokeks.org'') oder es kann ein Unterverzeichnis einer bestehenden Website dazu benutzt werden (z.B. ''www.schokokeks.org/svn'').


===Benutzer und ACL einrichten===
===Benutzer und ACL einrichten===


Zu den beiden letztgenannten Dateien komme ich nun. Die Datei ''users'' enthält eine Liste der erlaubten Benutzer. Für diejenigen, die sich mit Apache-Authentifizierung auskennen: Es ist eine ganz normale ''.htpasswd''-Datei. Diese kann mit dem Programm ''/usr/sbin/htpasswd2'' erstellt und bearbeitet werden. In der Hilfe des Programms wird erklärt, wie man damit Benutzer anlegt und verändert:
Zu den beiden vorgenannten Dateien komme ich nun. Die Datei ''users'' enthält eine Liste der erlaubten Benutzer. Für diejenigen, die sich mit Apache-Authentifizierung auskennen: Es ist eine ganz normale ''.htpasswd''-Datei. Diese kann mit dem Programm ''htpasswd'' erstellt und bearbeitet werden. In der Hilfe des Programms wird erklärt, wie man damit Benutzer anlegt und verändert:
  /usr/sbin/htpasswd2 /home/bernd/subversion/users bernd
  htpasswd -B /home/bernd/subversion/svn.bwurst.org/users bernd
würd z.B. einen Benutzer ''bernd'' anlegen und nach dem gewünschten Passwort fragen. Mehr dazu mit
würd z.B. einen Benutzer ''bernd'' anlegen und nach dem gewünschten Passwort fragen. Mehr dazu mit
  /usr/sbin/htpasswd2 --help
  htpasswd --help


Wenn man nun mindestens einen Benutzer angelegt hat, dann kann man mit Hilfe der ACL (''Access control list'') festlegen, was dieser Benutzer darf und was z.B. der anonyme Benutzer (ohne Authentifizierung) darf.
Wenn man nun mindestens einen Benutzer angelegt hat, dann kann man mit Hilfe der ACL (''Access control list'') festlegen, was dieser Benutzer darf und was z.B. der anonyme Benutzer (ohne Authentifizierung) darf.
Zeile 81: Zeile 105:


  [test:/]
  [test:/]
  bernd:rw
  bernd = rw
   
   
  [test:/trunk]
  [test:/trunk]
  *:r
  * = r
  bernd:rw
  bernd = rw


Nicht aufgeführte Benutzer für eine bestimmte Sektion haben keinen Zugriff. Wenn der Eintrag ''*:r'' nicht gesetzt wird, dann wird eine Anmeldung mit gültigen Benutzerdaten unbedingt verlangt.
Nicht aufgeführte Benutzer für eine bestimmte Sektion haben keinen Zugriff. Wenn der Eintrag ''*:r'' nicht gesetzt wird, dann wird eine Anmeldung mit gültigen Benutzerdaten unbedingt verlangt.
Zeile 91: Zeile 115:
Mehr Informationen und Hintergründe zur Konfiguration von Subversion finden Sie (auf englisch) im [http://svnbook.red-bean.com/en/1.1/index.html Subversion book].
Mehr Informationen und Hintergründe zur Konfiguration von Subversion finden Sie (auf englisch) im [http://svnbook.red-bean.com/en/1.1/index.html Subversion book].


==Administrator-Arbeit==
In der zentralen Konfiguration des Webservers ist alles für den Einsatz von Subversion vorbereitet, er muss nur noch für die gewünsche Domainden Eintrag erstellen oder anpassen.


Folgendes Setup würde das Repository von oben unter der Adresse ''https://svn.bwurst.org'' verfügbar machen:
==SVN-Subdomain erstellen==
<VirtualHost 87.106.4.7:443 [2001:8d8:81:1310:0:2:1:1]:443>
        ServerName svn.bwurst.org
        ServerAdmin bernd@schokokeks.org
        <IfModule mod_dav_svn.c>
                <Location />
                DAV svn
                SVNParentPath /home/bernd/subversion/repositories
                AuthType Basic
                AuthName "bwurst.org subversion repository"
                AuthUserFile /home/bernd/subversion/users
                Require valid-user
                <IfModule mod_authz_svn.c>
                        Satisfy any
                        AuthzSVNAccessFile /home/bernd/subversion/acl
                </IfModule>
                </Location>
        </IfModule>
        SSLEngine On
        SSLCertificateFile conf/openssl/bwurst.org.crt
        SSLCertificateKeyFile conf/openssl/bwurst.org.key
</VirtualHost>


Danach sollte ein Zugriff der Benutzers ''bernd'' auf https://svn.bwurst.org/test möglich sein, wie in der obigen ACL angegeben. Das Verzeichnis ''trunk'' existiert im Moment noch nicht, daher kann dieses nicht anonym gelesen werden.
Typischerweise werden SVN-Server unter einer eigenen Subdomain betrieben. Daher ist diese Funktion bei uns in das Webinterface bei den Subdomains integriert. Sie können einfach eine neue Subdomain anlegen und dort von "Normal (Selbst Dateien hinterlegen)" auf "Subversion-Server" umstellen.


===Anonymer Zugriff===
Alle Pfadangaben werden dann wie oben genannt automatisch zugewiesen. Beachten Sie, dass die Änderungen im Webinterface nicht umgehen wirken sondern mit einer Verzögerung von maximal 10 Minuten auf dem Server umgesetzt werden.


Im obigen Beispiel ist die Zeile '''''Satisfy any''''' dafür verantwortlich, dass auch anonyme Benutzer auf das Repository zugreifen dürfen (sofern Sie zusätzlich in der ''acl''-Datei für bestimmte Pfade mit '''*:r''' bzw '''*:rw''' entsprechende Zugriffsrechte freigegeben haben, wie [[#Benutzer und ACL einrichten|oben beschrieben]]). Da es sicherheitskritisch sein kann, wenn man diesen Umstand nicht weiß, schalten wir dies nur ein, wenn der Benutzer es möchte. Ggf. also bitte melden.


==Später weitere repositories anlegen==
==Später weitere repositories anlegen==
Wenn der SVN-über-DAV-Zugang einmal eingerichtet ist, können beliebig viele Repositories ohne Administrator-Arbeit erstellt und verwaltet werden.
Wenn der SVN-über-DAV-Zugang einmal eingerichtet ist, können beliebig viele Repositories ohne neue Subdomain erstellt und verwaltet werden.
 
Dazu muss einfach im Verzeichnis das die Repositories enthält (im Beispiel ''/home/bernd/subversion/repositories'') der Befehl '''svnadmin create ''foobar''''' ausgeführt werden, wobei ''foobar'' der Name des neuen Repositories ist.
 
Eventuell müssen die Verzeichnisrechte angepasst werden: '''setfacl -R -m u:apache:rwx ''foobar/'''''


Dazu muss einfach im Verzeichnis das die Repositories enthält (im Beispiel ''/home/bernd/subversion/svn.bwurst.org/repositories'') der Befehl '''svnadmin create ''foobar''''' ausgeführt werden, wobei ''foobar'' der Name des neuen Repositories ist.


Zudem ist in den meisten Fällen nötig, dass man in der oben erstellten Datei ''acl'' einen neuen Eintrag äquivalent zum alten erstellt.
Zudem ist in den meisten Fällen nötig, dass man in der oben erstellten Datei ''acl'' einen neuen Eintrag äquivalent zum alten erstellt.

Aktuelle Version vom 27. Oktober 2018, 15:40 Uhr

Subversion ist ein sog. Version-Kontrollsystem. Diese Systeme sind dazu gedacht, einen Datenbestand (meistens Programmcode oder Text-Dokumente) zu verwalten und Änderungen zu dokumentieren. Damit können z.B. mehrere Autoren an einem Programm schreiben und es ist jederzeit möglich, einzelne Änderungen zu verfolgen oder rückgängig zu machen.

Auch für HTML- oder PHP-Dateien ist Subversion sehr empfehlenswert.

Funktionsweise

Subversion arbeitet immer mit einem sog. Repository in dem das System seine Aufzeichnungen speichert und einer Working copy, die den aktuellen Stand enthält und in der der Benutzer seine Änderungen direkt durchführt.

Allerdings gibt es verschiedene Möglichkeiten, wie das Subversion-Programm auf sein Repository zugreift.

lokales Repository

Im trivialen Fall ist das Repository einfach ein Verzeichnis auf der selben Festplatte. Dann muss der Benutzer, der Subversion aufruft nur Lese- und Schreibrechte in dem Verzeichnis haben und kann sofort mit Subversion arbeiten. Diese Variante ist nur zu empfehlen, wenn nur wenige (besser: nur ein) benutzer an immer dem selben Rechner arbeitet.

Diese Variante ist auf schokokeks.org zwar ohne weiteres nutzbar, wir empfehlen aufgrund der genannten Einschränkungen jedoch die Einrichtung eines Servers wie folgt...

Subversion-Server

Meistens ist es praktischer, einen zentralen Server zu haben, auf dem das Repository gespeichert ist. Es ist damit möglich von verschiedenen Computern mit verschiedenen Benutzern zu arbeiten und alle Änderungen trotzdem zentral zu erfassen.

Bei uns ist die Vorkehrung vorhanden um Subversion über WebDAV zu betreiben. Webdav erweitert das normale HTTP-Protokoll um eine direkte Upload-Fähigkeit und einige andere Techniken zur Datei-Manipulation. Das Subversion-Modul im Webserver sorgt nun einerseits dafür, dass das Subversion-Programm direkt mit dem Server kommunizieren kann und dort die Änderungen verwaltet werden, andererseits besteht aber zudem die Möglichkeit mit einem ganz normalen Browser auf den jeweils aktuellen Stand des Repositories zuzugreifen. Dieses Feature ist besonders interessant, wenn neben den Autoren der Daten auch Besucher einzelne Daten herunterladen können sollen (das ist natürlich konfigurierbar), denn diese brauchen dann keine weitere Software als einfach den Browser. Ob man für den Zugriff Benutzernamen und Passwort eingeben muss lässt sich frei konfigurieren.

Im folgenden werde ich technisch beschreiben, wie der Subversion-via-Webdav-Zugriff eingerichtet werden kann.


Einrichtung des Webdav-Zugriffs

Vorbereitung

Zuerst sollten Sie die passenden Pfade und Dateien in Ihrem Benutzeraccount erstellen.


Pfade

Um den Aufwand für beide Seiten minimal zu halten und Missverständnisse und Verwirrung zu minimieren, werden bei uns die Pfade nach untenstehendem Schema angenommen. Abweichende Konfigurationen sind technisch möglich, aber mit erheblichem Mehraufwand verbunden.

Hier in dieser Anleitung will der Benutzer bernd unter der Subdomain svn.bwurst.org ein Subversion-Repository betreiben. Wann immer die Pfade diese Teile enthalten, sollte das bei Ihnen durch den zu verwendenden Namen ersetzt werden.


Vorbereitungen

Als erster Schritt muss das Subversion-Unterverzeichnis im Benutzer-Home-Verzeichnis angelegt werden:

mkdir ~/subversion

Dort wird dann für die passende Subdomain ein Daten-Verzeichnis angelegt:

mkdir ~/subversion/svn.bwurst.org

Damit der Webserver dieses Verzeichnis benutzen kann, muss man ihm das x-Recht einräumen:

setfacl -m u:apache:x /home/bernd /home/bernd/subversion /home/bernd/subversion/svn.bwurst.org

(Hierbei ist wichtig, dass der Webserver auf alle Zwischen-Ebenen mindestens ein x-Recht bekommt um das Verzeichnis zu durchqueren.)

Der Subversion-Server arbeitet nach dem Prinzip, dass man ein Verzeichnis vorgibt, in dem sich dann mehrere Repositories befinden können. Zusätzlich werden noch zwei Dateien gebraucht, die ebenfalls zum Subversion-System der betreffenden Subdomain gehören, jedoch nicht in diesem repositories-Verzeichnis sein sollten:

mkdir ~/subversion/svn.bwurst.org/repositories
touch ~/subversion/svn.bwurst.org/acl
touch ~/subversion/svn.bwurst.org/users

Für diese zwei Dateien und das Repositories-Verzeichnis müssen wir ebenfalls die Rechte verteilen:

setfacl -m u:apache:rx ~/subversion/svn.bwurst.org/repositories
setfacl -m u:apache:r ~/subversion/svn.bwurst.org/acl
setfacl -m u:apache:r ~/subversion/svn.bwurst.org/users

Damit der Apache in allen neuen Repositories automatisch das Recht erhält, beliebig zu lesen und zu schreiben, setzen wir noch das hier:

setfacl -m default:u:apache:rwx ~/subversion/svn.bwurst.org/repositories

Zudem setzen wir das folgende, damit der Benutzer selbst die Dateien wieder verändern und z.B. löschen kann (bernd bitte durch den eigenen Benutzernamen ersetzen):

setfacl -m default:u:bernd:rwx ~/subversion/svn.bwurst.org/repositories

Nach dieser Vorbereitung kann das SVN-Repository über das Konfigurationsinterface aktiviert werden.

Repository erstellen

Nach dieser Vorbereitung kann man dann das wirkliche Daten-Repository erstellen.

Erstellen des Repositories »test«:

cd ~/subversion/svn.bwurst.org/repositories
svnadmin create test
Fehler im aktuellen Subversion

Der Befehl svnadmin create setzt sich in der aktuellsten Version leider beim erstellen einer Datei über die Default-ACL hinweg und erzeugt eine Datei die der Webserver nicht schreiben darf. Zur Lösung des Problems bitte diesen Befehl (mit angepasstem Pfad für test) zusätzlich ausführen:

setfacl -m u:apache:rw test/db/rep-cache.db


Benutzer und ACL einrichten

Zu den beiden vorgenannten Dateien komme ich nun. Die Datei users enthält eine Liste der erlaubten Benutzer. Für diejenigen, die sich mit Apache-Authentifizierung auskennen: Es ist eine ganz normale .htpasswd-Datei. Diese kann mit dem Programm htpasswd erstellt und bearbeitet werden. In der Hilfe des Programms wird erklärt, wie man damit Benutzer anlegt und verändert:

htpasswd -B /home/bernd/subversion/svn.bwurst.org/users bernd

würd z.B. einen Benutzer bernd anlegen und nach dem gewünschten Passwort fragen. Mehr dazu mit

htpasswd --help

Wenn man nun mindestens einen Benutzer angelegt hat, dann kann man mit Hilfe der ACL (Access control list) festlegen, was dieser Benutzer darf und was z.B. der anonyme Benutzer (ohne Authentifizierung) darf.

Ich gehe im Folgenden davon aus, dass der Benutzer bernd der Administrator ist und zugriff auf alles haben soll, ein nicht angemeldeter Benutzer soll im Repository test jedoch nur Zugriff auf das Unterverzeichnis trunk (Laut subversion-Dokumentation soll trunk den grade aktuellen Stand wiederspiegeln) bekommen. Dazu erstelle ich folgende ACL-Datei:

[test:/]
bernd = rw

[test:/trunk]
* = r
bernd = rw

Nicht aufgeführte Benutzer für eine bestimmte Sektion haben keinen Zugriff. Wenn der Eintrag *:r nicht gesetzt wird, dann wird eine Anmeldung mit gültigen Benutzerdaten unbedingt verlangt.

Mehr Informationen und Hintergründe zur Konfiguration von Subversion finden Sie (auf englisch) im Subversion book.


SVN-Subdomain erstellen

Typischerweise werden SVN-Server unter einer eigenen Subdomain betrieben. Daher ist diese Funktion bei uns in das Webinterface bei den Subdomains integriert. Sie können einfach eine neue Subdomain anlegen und dort von "Normal (Selbst Dateien hinterlegen)" auf "Subversion-Server" umstellen.

Alle Pfadangaben werden dann wie oben genannt automatisch zugewiesen. Beachten Sie, dass die Änderungen im Webinterface nicht umgehen wirken sondern mit einer Verzögerung von maximal 10 Minuten auf dem Server umgesetzt werden.


Später weitere repositories anlegen

Wenn der SVN-über-DAV-Zugang einmal eingerichtet ist, können beliebig viele Repositories ohne neue Subdomain erstellt und verwaltet werden.

Dazu muss einfach im Verzeichnis das die Repositories enthält (im Beispiel /home/bernd/subversion/svn.bwurst.org/repositories) der Befehl svnadmin create foobar ausgeführt werden, wobei foobar der Name des neuen Repositories ist.

Zudem ist in den meisten Fällen nötig, dass man in der oben erstellten Datei acl einen neuen Eintrag äquivalent zum alten erstellt.