Diese Dokumentation wurde zur Beschreibung der Serie 1.6.x von Subversion erstellt. Falls Sie eine unterschiedliche Version von Subversion einsetzen, sei Ihnen dringend angeraten, bei http://www.svnbook.com/ vorbeizuschauen und stattdessen die zu Ihrer Version von Subversion passende Version dieser Dokumentation heranzzuiehen.
Subversion wurde mit einer abstrakten Projektarchiv-Zugriffs-Schicht entworfen. Dies bedeutet, dass auf ein Projektarchiv automatisiert von beliebigen Server-Prozessen zugegriffen werden kann, und die für Clients vorhandene „Projektarchiv-Zugriffs“-API (Programmierschnittstelle) erlaubt es Programmierern, Plugins zu entwickeln, die relevante Netzwerkprotokolle verstehen. Theoretisch ermöglicht dies Subversion, eine unbegrenzte Zahl an Netzwerkprotokollen zu verwenden. Praktisch gibt es heute allerdings nur zwei weitverbreitete Server.
Apache ist ein sehr beliebter Webserver, welcher mittels des mod_dav_svn-Moduls auf Projektarchive 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 mittels SSL verschlüsselte Verbindungen, Protokollierung, sowie die Integration diverser Authentifikationssysteme von Drittanbietern und einen eingeschränkten Web-Browser-gestützten Projektarchiv-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 Protokollierungsfunktionen 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.
Das Netzwerkprotokoll, das svnserve
spricht, kann auch über eine SSH-Verbindung getunnelt werden.
Diese Option zum Einsatz von svnserve
unterscheidet sich erheblich von der traditionellen Nutzung von
svnserve. SSH wird zur Verschlüsselung der
gesamten Kommunikation verwendet. Ebenso zur Authentifikation,
was die Verwendung von realen Anwenderkonten auf dem
Subversion-Server notwendig macht (anders als beim einfachen
svnserve, der seine eigene Anwenderverwaltung
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 Projektarchiv 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
Funktion | Apache + mod_dav_svn | svnserve | svnserve via SSH |
---|---|---|---|
Authentifikationsmöglichkeiten | HTTP Basic oder Digest 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 |
Anwenderkonfigurationen | private Datei users oder jede
andere für den Apache Webserver verfügbare Methode
(LDAP, SQL, usw.) |
private Datei users oder jede
andere für SASL verfügbare Methode (LDAP, SQL,
usw.) |
lokale Anwenderkonten auf dem Server |
Autorisierungsmöglichkeiten | Lese-/Schreibzugriff auf das komplette Projektarchiv oder pfadbasierte Rechtevergabe | Lese-/Schreibzugriff auf das komplette Projektarchiv oder pfadbasierte Rechtevergabe | Lese-/Schreibzugriff nur auf ganzes Projektarchiv einstellbar |
Verschlüsselung | optional mit SSL (https) | optional mit der SASL-Funktionen | Bestandteil der SSH-Verbindung |
Protokollierung | Protokollierung der Subversion-Aktivitäten auf hoher Ebene, dazu detaillierte Protokollierung auf der Ebene der HTTP-Anfragen | Nur Protokollierung der Aktivitäten auf hoher Ebenen | Nur Protokollierung der Aktivitäten auf hoher Ebenen |
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 Projektarchivs | 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 Replizierungen | 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 |