Sonntag, 4. Mai 2008

Subversion für weniger Reibung

Subversion (SVN) ist ein Versionsverwaltungssystem (der Hersteller spricht auch von "source control - change management"-System), welches ich noch nicht sehr lange Anstelle von CVS einsetze, aber schon recht liebgewonnen habe.

Während Wikipedia den formalen Unterschied zu CVS kennt, kostenlose Tools zum Wechsel von Beispielsweise PVCS zu SVN existieren, es sogar transparente  Brückenlösungen zum MS Team Foundation Server gibt und auch SVN-Neulinge dank kurzen Einführungen schnell im Boot sind, bin ich der Meinung, dass man einen Wechsel ruhig riskieren sollte.

Belohnt wird man nicht nur durch eventuell gesparten Lizenskosten, sondern auch durch eine, wie ich finde, reibungslosere Softwareentwicklung: Da das "locken" von Dateien und Verzeichnissen zwar möglich, zum ändern der Dateien aber nicht notwendig ist, bewegt man sich fast von allein in Richtung Collective Code Ownership und das ermuntert geradezu "Unschönheiten", auch über die Grenzen des vormals eigenen Moduls hinaus, zu verbessern.

Zur eben erwähnten "Reibungslosigkeit" trägt Tortoise erheblich bei: Der SVN-Client sorgt dafür, dass Subversion-Symbole fortan im Explorer sichtbar werden und commits, updates und Co nur einen Rechtsklick entfernt sind.

Aus der Entwicklungsumgebung VisualStudio heraus helfen Add-Ins wie Ankh oder auch das nicht kostenlose aber nützliche VisualSVN. Ebenso gibt es weitere Plugins für Eclipse, JDeveloper und NetBeans.

Wer die Kopplung in den Explorer oder die Integration in die Entwicklungsumgebung scheut kann ebenfalls mit der Kommandozeile oder einem GUI-gestützen SVN-Klienten wie beispielsweise RapidSVN auf die Repositories zugreifen.

Wer aus eigenen Applikationen auf Subversion-Repositories zugreifen möchte kann auch dieses tun: Während es für Java und Python entsprechende Bindings direkt vom Herstell gibt, müssen C# Entwickler einen kleinen Umweg, aber trotzdem gangbaren Umweg in Kauf nehmen: mit Hilfe der Java Implementation IKVM.NET für Mono/MS.NET können die SVN Java-Bindings auch unter .NET benutzt werden. Wie das funktioniert, beschreibt hungryforknowledge in seinem Blog.

Mehr zum thema Subversion, Hooks und C# werde ich in einem nächsten Beitrag schreiben.