Open Source im professionellen Einsatz

Git: Der Gipfelstürmer

Merges sind einer der Prüfsteine, an denen Versionskontrollsysteme ihre Qualität unter Beweis stellen. Einen ersten Einblick in die Leistungsfähigkeit von Git gibt die Manpage zu »git-merge« . So bietet Git die Wahl zwischen fünf unterschiedlichen Merge-Strategien.

Der Standard-Merge-Algorithmus »recursive« , der eine mehrgliedrige Vererbungsgeschichte durch mehrere, die Historie nachzeichnende Dreiwege-Merges auflöst, hat sich in der Kernelentwicklung als bester Kompromiss zwischen vermeidbaren Konflikten und fehlerhaften Merges ergeben. Er akzeptiert außerdem die Parameter »ours« und »theirs« , die im Konfliktfall ohne Nachfrage die eigene oder die fremde Lösung präferieren.

Bei verteilten Versionskontrollsystemen ist es üblich, dass sich der letzte lokale Commit, der das private Repository noch nicht verlassen hat, zurücknehmen lässt, um etwa Tippfehler in der Commit Message zu korrigieren oder vergessene Dateien hinzuzufügen. Git geht hier einen Schritt weiter: Der Anwender darf beliebig weit zurückliegenden Commits editieren, solange er sie noch nicht per »pull« in ein anderes Repository übertragen hat.

Einerseits bricht Git hier mit dem ehernen Gesetz der Versionskontrolle, dass jede Aktion nachvollziehbar bleiben und sich bei Bedarf rückgängig machen lassen soll. Andererseits führt die nachträglich fälschbare Commit History das Prinzip der zunächst privaten Revisionen bei der verteilten Versionsverwaltung konsequent zu Ende.

Klassenprimus

Git bietet Entwicklern jedes nur erdenkliche Feature. Wegen seiner großen Verbreitung sind zudem zahlreiche externe GUI-Projekte entstanden [7]. Einen in Tcl/Tk geschriebenen Tree-Browser liefern die Git-Entwickler selber mit. Unter den unabhängigen Projekten besonders hervorzuheben ist Git-Cola, das fast alle Git-Funktionen unterstützt, beim Tree-Browser aber auf das optisch altbackene Gitk setzt. Auch das mitgelieferte Webfrontend Gitweb, das Kernel.org benutzt, ist optisch und beim Funktionsumfang keine Offenbarung. Doch gibt es zahlreiche Alternativen, die in fast allen in der Webentwicklung üblichen Programmiersprachen umgesetzt sind [7].

Git lässt sich in Netbeans und Eclipse einbinden. Auch für die freie Projektmanagement-Software Trac gibt es ein Plugin. Ebenso gut sorgt das Git-Wiki für Vi- und Emacs-Anwender.

Tabelle 1

Versionskontollsysteme im Überblick

 

CVS

SVN

Git

Mercurial

Bazaar

Architektur

zentral

zentral

verteilt

verteilt

zentral/verteilt

Besonderheiten

kein Umbenennen/ Verschieben

Bedienung wie CVS

editierbare History

erweiterbar

leistungsfähige GUI

Import

 

CVS

CVS, SVN, Mercurial, Bazaar

SVN, Git

CVS, SVN, Git, Mercurial

Export

   

Bazaar

SVN, Git

CVS, SVN, Git, Mercurial

IDE-Integration

Vi, Emacs, Netbeans, Eclipse

Vi, Emacs, Netbeans, Eclipse

Vi, Emacs, Netbeans, Eclipse

Vi, Emacs, Netbeans, Eclipse

Vi, Emacs, Netbeans, Eclipse

Projektmanagement-Software

Fusionforge

Trac, Launchpad, Fusionforge

Trac, Launchpad, Fusionforge

Trac, Launchpad, Fusionforge

Trac (experimentell), Fusionforge

unterstützte Betriebssysteme

Windows, Unix, Mac

Windows, Unix, Mac

Windows (eingeschränkt), Unix, Mac

Windows, Unix, Mac

Windows, Unix, Mac

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

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

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook