Open Source im professionellen Einsatz
Linux-Magazin 01/2011
© mch67, 123RF.com

© mch67, 123RF.com

Freie Software zur Versionsverwaltung

Code griffbereit

Einst gab es in der freien Softwarewelt nur CVS. Inzwischen existieren mit Subversion, Git, Mercurial und Bazaar mehrere professionelle, ausgereifte Systeme für die Versionsverwaltung. Besonders die verteilten Versionskontrollsysteme liefern sich bei den Features ein Kopf-an-Kopf-Rennen.

340

Größere Softwareprojekte lassen sich nicht ohne Versionskontrollsystem bewältigen. Nur mit dessen Hilfe bleibt nachvollziehbar, wer wann welche Änderung vorgenommen hat und aus welchem Grund. Der einstigen Monokultur von CVS ist die freie Softwarewelt entwachsen: Um die Gunst der Anwender buhlen zahlreiche freie Systeme wie Subversion, Git, Mercurial und Bazaar, deren Stärken und Schwächen dieser Artikel vorstellt.

CVS: Der Urahn

CVS [1] erreichte bereits vor 20 Jahren Version 1.0. Der Veteran ermöglichte es, viele Dateien in einer gemeinsamen Versionshistorie zu verwalten, daher auch der Name Concurrent Versions System (concurrent bedeutet simultan). Damit standen jene Kernfunktionen zur Verfügung, die Entwickler bis heute bei der täglichen Arbeit mit Versionskontrollsystemen einsetzen.

Auch wenn CVS über viele Jahre wegen seiner GPL-Lizenz das verbreitetste Sourcecode-Managementsystem im Open-Source-Bereich war, so plagt es seine Anwender doch mit Unzulänglichkeiten. Sie ergeben sich größtenteils daraus, dass CVS auf einer Versionsverwaltung für einzelne Dateien aufsetzt.

In der Software-Entwicklung beschränkt sich ein logischer Entwicklungsschritt, den der Entwickler in einem Commit zusammenfasst, oft nicht auf eine einzige Datei. Bei CVS lassen sich zusammengehörige Revisionen mehrerer Dateien nur über Commit-Zeitpunkt und -Message in Beziehung setzen. Eine Revisionsnummer kennzeichnet nur die Zahl der Änderungen an einer einzelnen Datei.

Dass CVS isoliert über einzelne Dateien Buch führt statt Snapshots des ganzen Repository anzulegen, bringt noch weitere Einschränkungen mit sich: Beim Verschieben oder Umbenennen von Dateien im Repository verlieren diese ihre Versionshistorie. Außerdem verlaufen Commits in CVS nicht atomar: Das System iteriert bei einem Commit über die Ordner eines Repository und sperrt dabei nur das Verzeichnis, mit dem es gerade beschäftigt ist.

Atomzeitalter

Netzwerkprobleme oder zwei gleichzeitig laufende Übertragungen versetzen das Repository daher unter Umständen in einen inkonsistenten Zustand – allerdings nur was den Inhalt des letzten Commit angeht. Gegen die Korruption der Datenstrukturen, die das ganze Repository unbrauchbar machen, ist das einfach gestrickte CVS, das jeder Quellcode-Datei in einem Unterverzeichnis eine Datei mit gesonderter Versionshistorie zuweist, sehr resistent. CVS erfährt nur noch eingeschränkten Support, neue Features wird es nicht mehr geben.

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

  • Mercurial 1.3 führt Sub-Repositories ein

    Das Mercurial-Projekt hat Version 1.3 seiner freien Software zur Versionskontrolle veröffentlicht. Als experimentelles Feature führt die Release Sub-Repositories ein.

  • 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.

  • Mercurial: Version 1.0 mit zahlreichen Verbesserungen

    Mercurial, ein verteiltes System zur Versionskontrolle, steht in Version 1.0 zur Verfügung.

  • Reposurgeon 0.1 ändert Metadaten in Versionskontrollsystemen

    Eric S. Raymond hat ein Tool in Version 0.1 herausgebracht, das bei einer Reihe Versionskontrollsystemen die nachträgliche Änderung von alten Kommentaren, Commits und Metadaten ermöglicht.

  • Projektverwaltung

    Wiki, Bugtracker und ein Webfrontend zum Repository bilden das Fundament moderner Verwaltungstools für Software-Entwickler. Sourceforge, Trac, Launchpad und ihre Alternativen stellen sich dem Vergleich.

comments powered by Disqus

Stellenmarkt

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