Open Source im professionellen Einsatz
Linux-Magazin 07/2006
© photocase.com

© photocase.com

Revisionskontrolle für unterwegs mit SVK

Eric geht Essen

Aktuelle Versionskontrollsysteme folgen dem Trend zum verteilten System. SVK gehorcht dem dezentralen Ansatz und bedient sich dabei existierender Systeme wie Subversion. Dieser Artikel beschreibt die Konzepte und zeigt, wie SVK sie auf elegante Weise umsetzt.

600

In einer E-Mail mit dem Subject "Eric goes to lunch" skizzierte Eric S. Raymond im Jahr 2004 auf der Subversion-Mailinglist [1] den typischen Arbeitsalltag eines Entwicklers, der viel unterwegs ist. Zwar verbringt die dort auftretende Hauptfigur ihre Nachmittage programmierend nur im Sandwich-Laden um die Ecke und nicht etwa am anderen Ende der Welt. Auf die gewohnte Internetverbindung muss sie in dieser Zeit trotzdem verzichten.

Diese Geschichte deutet bereits an, dass der zentralistische Ansatz von CVS und vergleichbaren Systemen modernen Anforderungen nicht mehr gewachsen ist. Der Grund dafür liegt in der enorm gewachsenen Mobilität der Entwickler. Vor allem in der Open-Source-Entwicklergemeinde ist es üblich, statt in einem Großraumbüro eher bei Starbucks über eine WLAN-Netzwerkverbindung zu arbeiten. Aber egal ob im Coffeeshop oder im Home-Office: Eine unterbrechungsfreie Verbindung zu einem zentralen Quellcode-Repository ist in einer solchen Umgebung nicht immer gewährleistet. Das erfordert eine Lösung, die es erlaubt, offline zu arbeiten.

Umherschweifende Programmierer

Eric S. Raymond definierte in seiner E-Mail mehrere Anwendungsfälle der verteilten Software-Entwicklung. Zu unterscheiden sind Szenarien mit Internetverbindung und solche, bei denen diese fehlt, zum Beispiel in der Eisenbahn oder in einem Restaurant. Arbeitet der Entwickler unabhängig von einem zentralen Quellcode-Repository, braucht er auf seinem Rechner ein eigenes Miniatur-Repository.

Eine einfache Lösung dafür wäre, wie Raymond beschreibt, via Rsync ein CVS- oder Subversion-Repository auf den lokalen Rechner zu spiegeln. Wesentlich eleganter wäre aber, wenn ein Versionskontrollsystem auch diesen Arbeitsschritt übernähme. Unabhängig davon wandern die Änderungen, die Entwickler offline vornehmen, irgendwann wieder in das zentrale Quellcode-Repository.

Die bereits im Linux-Magazin vorgestellten Tools Arch und Monotone [2] sowie das Kernel-VCS Git [3] sind solche verteilten Versionskontrollsysteme. SVK [4] realisiert ein verteiltes VCS, indem es auf existierende Versionskontrollsysteme wie Subversion [5] aufsetzt.

Die Installation des SVK-Systems gestaltet sich verhältnismäßig einfach, wenn sie über eines der zahlreich verfügbaren Linux-Softwarepakete erfolgt. Von einem manuellen Übersetzen der Perl-Quellen ist eher abzuraten, da SVK von diversen Perl-Softwarepakten abhängt und es ein nicht zu unterschätzender Aufwand ist, diese ordnungsgemäß zu installieren. Unter Windows ist von einer manuellen Installation gänzlich abzuraten. Stattdessen sollten Windows-Benutzer besser zur installierbaren Binärversion der SVK-Distribution greifen.

Da SVK auf Teilen des Subversion-Systems basiert, ist es notwendig, die Perl-Bindings des Subversion-Systems zu übersetzen. Dies erfordert vor allem unter Windows Werkzeuge wie Microsoft Visual Studio. Zudem stellte sich beim Schreiben dieses Artikels heraus, dass die 256-Byte-Grenze für relative Pfadangaben unter Windows wegen der zahlreichen Include-Anweisungen ein erhebliches Hindernis bildet.

Elegante Lösung

Das Rad völlig neu zu erfinden, um ein verteiltes Versionskontrollsystem zu realisieren, mag ein eher plumper Ansatz sein. Bereits existierende Lösungen erneut zu verwenden oder diese in das eigene Architekturkonzept zu integrieren, ist vergleichsweise viel eleganter.

SVK geht diesen Weg, indem es zum einen Teile des Subversion-Systems nutzt, zum anderen Subversion um neue Funktionen erweitert. SVK verwendet nicht alle Teile der Subversion-Codebasis. Vielmehr greift es auf ausgewählte Teile wie den Libsvn_fs-Storage-Driver zurück. Andere Teile, etwa das Modul zum Verwalten einer Arbeitskopie, wurden von Grund auf neu entwickelt.

Ein weiterer interessanter Aspekt, den SVK bietet, ist die Integration anderer Versionskontrollsysteme wie Perforce, CVS oder Microsofts Visual Source Safe. Es ist also möglich, mit nur einem Werkzeug und nur einem Satz von Befehlen auf unterschiedlichen Versionskontrollsystemen zu arbeiten. Technisch wird dies auf der Basis von Treibern für das jeweilige Versionskontrollsystem umgesetzt. Ein Verfahren, wie man es von den JDBC-Datenbank-Treibern kennt. Auf diesen Punkt geht der Artikel später noch genauer ein. Weil SVK stark von den gewohnten Prinzipien der Versionskontrollsysteme abweicht, erschließen sich Funktion und Bedienung allerdings nicht von selbst.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Nachfolgemodell

    Obwohl CVS als Versionskontrollsystem nicht das Gelbe vom Ei ist, hat es einen großen Vorteil gegenüber besseren, aber kommerziellen Alternativen: Es ist freie Software. Mit Subversion bekommt es Konkurrenz.

  • Markt-Modell

    Bei Versionskontrollsystemen wie CVS und Subversion speichert ein zentraler Server alle Dateien. Fällt er aus, ist mit der Arbeit Schluss. Bazaar löst dieses Problem, indem es das Quellcode-Management über die Rechner der Entwickler verteilt.

  • Tux liest

    Alles unter Kontrolle: Der Survival-Guide von Erik Keller verspricht weniger Stress bei der täglichen Arbeit mit Unix- und Linux-Systemen. Das zweite besprochene Buch zeigt, wie Entwicklerteams mit Hilfe von Subversion den Überblick in ihrem Codebestand behalten.

  • Tux liest

    Subversion hat das Zeug dazu, CVS als Versionskontrollsystem abzulösen. Das Team hat ein Handbuch geschrieben, um Anfänger und Umsteiger ins neue System einzuführen. Das Drucksystem Cups ist bereits Standard. Hauptentwickler Michael R. Sweet verschafft mit seinem umfassenden Buch Durchblick.

  • Git als Helfer beim Pakete-Bau

    2005 bereicherte Kernel-Schöpfer Linus Torvalds die Landschaft der freien Versionskontrollsysteme um ein weiteres Projekt. Die Entwicklung von und mit Git, dessen Name ein britischer Slangausdruck für eine einfältige Person ist, steht seither nicht still. Git ist nicht nur für Programmierer, der klassischen Benutzerbasis interessant - auch die Paketierer von Linux-Distributionen wie Debian profitieren von dem Werkzeug.

comments powered by Disqus

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.