Subversion wurde mit einer abstrakten Netzwerkschicht entworfen. Dies bedeutet, dass auf ein Repository automatisiert von beliebigen Server-Prozessen zugegriffen werden kann, und die für Clients vorhandene „Repository-Access“-API (Programmierschnittstelle) erlaubt es Programmierern, Plugins zu entwickeln, die relevante Netzwerkprotokolle verstehen. Theoretisch ermöglicht dies Subversion, eine unbegrenzte Zahl an Netzwerkprotokollen zu verwenden. Zum Zeitpunkt an dem dies geschrieben wird, gibt es aber nur zwei Server.
Apache ist ein sehr beliebter Webserver, welcher mittels des mod_dav_svn-Moduls auf Repositorys zugreifen und diese für Clients verfügbar machen kann. Verwendet wird dabei das WebDAV/DeltaV-Protokoll, welches eine Erweiterung von HTTP ist. Da Apache ein stark erweiterbarer Webserver ist, bietet er eine Menge an „frei verfügbaren“ Funktionen/Modulen, wie SSL-verschlüsselte Verbindungen, Logging, sowie die Integration diverser Authentifikationssysteme von Drittanbietern und einen eingeschränkten Web-Browser-gestützten Repository-Lesezugriff.
In der anderen Ecke befindet sich svnserve: ein kleiner, leichtgewichtiger Server, der ein einfaches Netzwerkprotokoll für die Zugriffe der Clients verwendet. Da dieses Protokoll für die Verwendung mit Subversion entwickelt wurde und, im Gegensatz zu HTTP, zustandsorientiert ist, bietet es einen deutlich schnelleren Netzwerkzugriff – spart allerdings auch einige wichtige Funktionen aus. So bietet er eine SASL-basierte Verschlüsselung und Authentifikation, hat aber keine Logging-Funktionen oder eingebauten Web-Browser-Zugriff. Wie auch immer, er ist extrem einfach einzurichten und für kleinere Teams, welche einfach nur schnell mit Subversion "loslegen" wollen, die beste Wahl.
Ein dritte Möglichkeit ist, svnserve durch
SSH-Verbindungen zu tunneln. Auch wenn in diesem Fall weiterhin
svnserve verwendet wird, so unterscheidet sich
die Funktionalität ziemlich von der normalen Nutzung von
svnserve. SSH wird zur Verschlüsselung der gesamten
Kommunikation verwendet. Ebenso zur Authentifizierung, was die
Verwendung von realen Nutzerkonten auf dem Subversion-Server notwendig
macht (anders als beim einfachen svnserve, der seine
eigene Nutzerverwaltung hat). Des weiteren ist es notwendig – da jeder
angemeldete Nutzer einen eigenen svnserve-Prozess
startet – einer Gruppe von lokalen Nutzern (aus Sicht der Rechtevergabe)
vollen Zugriff auf das Repository via file:// URLs zu
ermöglichen. Pfad-basierte Zugriffskontrolle schließt sich in diesem Fall aus,
da die Nutzer direkt auf die Datenbank-Dateien zugreifen.
Tabelle 6.1, „Vergleich der Serveroptionen für Subversion“ zeigt eine kurze Zusammenfassung der drei typischen Server-Konfigurationen.
Tabelle 6.1. Vergleich der Serveroptionen für Subversion
| Funktionen | Apache + mod_dav_svn | svnserve | svnserve via SSH |
|---|---|---|---|
| Authentifizierungsmöglichkeiten | HTTP(S) basic auth, X.509 Zertifikate, LDAP, NTLM, oder jede andere für den Apache Webserver verfügbare Methode | CRAM-MD5 als Voreinstellung, LDAP, NTLM oder jede andere für SASL verfügbare Methode | SSH |
| Nutzerkonfigurationen | private users Datei oder jede andere für den Apache Webserver verfügbare Methode (LDAP, SQL, etc) |
private users Datei, oder jede andere für SASL verfügbare Methode (LDAP, SQL, etc.) |
lokale Nutzerkonten auf dem Server |
| Autorisierungsmöglichkeiten | Lese-/Schreibzugriff auf das komplette Repository oder pfadbasierte Rechtevergabe | Lese-/Schreibzugriff auf das komplette Repository oder pfadbasierte Rechtevergabe | Lese-/Schreibzugriff nur auf ganzes Repository einstellbar |
| Verschlüsselung | optional mit SSL | optional mit der SASL-Funktionen | Bestandteil der SSH-Verbindung |
| Loggen | Apache-seitiges Loggen aller HTTP-Anfragen, optionales „High-Level“-Loggen aller Client-Operationen | kein Loggen | kein Loggen |
| Interoperabilität | Zugriff durch andere WebDAV-Clients | Verbindung nur mit svn-Clients möglich | Verbindung nur mit svn-Clients möglich |
| web-basierte Anzeige des Repositorys | eingeschränkte Unterstützung, alternativ mittels Programmen von Drittanbietern, wie etwa ViewVC, erweiterbar | nur mittels Programmen von Drittanbietern, wie etwa ViewVC | nur mittels Programmen von Drittanbietern, wie etwa ViewVC |
| Master-Slave-Server Replikationen | transparenter Schreib-Proxy vom Slave zum Master | beschränkt auf nur lesbare Slave-Server | beschränkt auf nur lesbare Slave-Server |
| Geschwindigkeit | ein wenig langsamer | ein wenig schneller | ein wenig schneller |
| Erstkonfiguration | eher komplexer | sehr einfach | durchschnittlich |