Subversion ist ein Programm zur Versionsverwaltung. Es dient zur Speicherung des Änderungsverlaufs an Dateien und Dokumenten. Dadurch ergeben sich Einsatzmöglichkeiten bei der Software- und Webentwicklung, aber auch in Büroanwendungen wie Dokumentenverwaltung. Subversion ist ein Weiterentwicklung von CVS (Concurrent Version System), einem Tool, das ursprünglich für die Kommandozeile von UNIX-Systemen entwickelt wurde. Dieses hatte, obwohl es über viele Jahre der Standard in der Entwicklung von Open Source Software war, einige Probleme. Eines der Hauptziele bei der Implementierung von Subversion war, diese Schwierigkeiten auszuräumen.
Prinzipiell besteht die Möglichkeit, mit SVN ähnlich wie mit CVS mit einem eigenen Serverprogramm zu arbeiten. Webbasierende Installationen von Subversion setzen jedoch in der Regel auf den Apache Webserver auf, um SVN auch mit der Weboberfläche zu bedienen zu können.
Mit dem Checkout wird eine Kopie des Projektes auf dem lokalen Datenträger erzeugt. Der Bearbeiter kann nun alle Dateien, die für diesen Projektzyklus überarbeitet werden müssen, verändern. Mit dem Zurückschreiben des geänderten Projekts ( Commit) erhält dieses eine neue Versionsnummer. Alle in diesem Projektschritt geänderten Dateien erhalten ebenfalls diese Nummer, so dass immer erkennbar bleibt, in welchem Kontext die Änderung der Datei erfolgt ist.
Für das Lösen der Konflikte, die bei Bearbeitung der Daten durch mehrere Projektbeteiligte auftreten, bietet Subversion zwei Möglichkeiten. Standardmäßig wird das Verfahren „Copy-Modify-Merge“ (Kopieren-Ändern-Zusammenführen) benutzt. Dabei werden die Arbeitskopien von den verschiedenen Projektmitarbeitern geändert. Beim Commit hat der Anwender dann die Möglichkeit, die zwischenzeitlich von anderen Teammitgliedern geänderten Daten mit seiner Arbeitskopie zu mischen. Dies ist bei reinen Textdateien oder Quellcode sinnvoll, bei Binärdateien wie Bildern oder Klangdateien aber schwierig zu bewerkstelligen.
Bei solchen Dateien wird daher in vielen Fällen auf das Verfahren „Lock-Modify-Unlock“ (Sperren-Ändern-Entsperren) angewandt. Dabei wird vor der Änderung der Datei in der lokalen Arbeitskopie ein Sperrvermerk im Repository eingetragen. Dies verhindert den Commit der Datei von jedem anderen Teammitglied. Erst mit dem Zurückschreiben der geänderten Daten wird der Lock wieder aufgehoben.
Natürlich gibt es dazu auch Verfahren, diese Sperren aufzuheben, falls der Benutzer, der den Lock angefordert hat, dies nicht selbst tut. Wie alle anderen Aktionen an der SVN-Datenbank wird aber auch dies selbstverständlich mitprotokolliert.
Subversion ist als Open Source Software frei erhältlich. Bei entsprechenden Kenntnissen ist es durchaus möglich, seinen eigenen SVN-Server aufzusetzen und zu betreuen. Dazu gehört neben der regelmäßigen Datensicherung auch das Einspielen von Updates, welche ungefähr in Jahresabstand erscheinen.
Der Aufwand, den die Administration eines Subversion-Systemes bedeutet, kann man vermeiden, wenn man sich für einen der vielen Anbieter von SVN-Hosting entscheidet, die sich in den letzten Jahren am Markt etabliert haben. Diese übernehmen Einrichtung und Wartung der Versionsverwaltungs-Software. Je nach Anzahl und Größe der benötigten Repositories gibt es verschiedene Preispläne. Vom kostenlosen Einsteiger-Modell bis zum unbegrenzten Profi-Hosting werden dabei alle Ansprüche abgedeckt.
Besonders interessant sind dabei Angebote, bei denen Webhosting und Subversion-Hosting kombiniert sind. Das SVN-Hosting begeleitet dabei die Entwicklung auf dem ohnehin benötigten Webserver, ohne dass ein eigenes Paket für das Subversion-Hosting benötigt wird.