Mercurial: Die goldene Mitte
Der Umstieg zwischen Mercurial und Git gleicht in einem Punkt dem zwischen SVN und CVS: Bei allen grundlegenden Befehlen ersetzt der Anwender lediglich »git«
durch »hg«
. Zwar ist Mercurial überwiegend in Python und nicht in C programmiert, dennoch ähneln sich Repository-Struktur und funktionale Prinzipien stark. Viele Git-Plugins, zum Beispiel die für Netbeans und Trac (Tabelle 1) sind Forks des Mercurial-Plugin.
Auch Linus Torvalds nennt Mercurial in seinem Vortrag über Git [6] eine im Wesentlichen gleichwertige Lösung. Wegen seiner Python-Basis lässt sich Mercurial effizienter unter Windows nutzen, während Git dort auf die Cygwin-Umgebung [8] angewiesen ist und unter Performance-Einbußen leidet. Seit einiger Zeit gibt es allerdings auch eine native Windows-Version [9].
Im Lieferzustand besticht Mercurial durch einen handlichen, für die meisten Anwender völlig ausreichenden Feature-Umfang, der zudem systematisch und verständlich dokumentiert ist [10]. Gits sehr großer Leistungsumfang dagegen schreckt Einsteiger eher ab.
Ohne Erweiterungen gibt sich Mercurial bezüglich der History unbestechlich. Es ist – abgesehen von dem auch hier mit »rollback«
revidierbaren letzten Commit – nicht möglich, ins Repository übertragene Dateien oder Changesets aus der Historie zu tilgen.
Transplantation
Mercurial enthält aber bereits im Lieferumfang Erweiterungen fürs Abändern der History, die man nur in der Konfigurationsdatei aktivieren muss. Mit der Transplant-Erweiterung [11] sind, wie der Name andeutet, Changesets zu verpflanzen. Der häufigste Anwendungsfall ist das von Git bekannte Rebasing, das die Changesets eines Branch in den Hauptzweig überträgt, als hätte der Entwickler sie direkt dort eingecheckt. Die Transplant-Extension unterstützt wie Git das Cherry Picking, also das Rauspicken von Revisionen (Abbildung 2).
Der Preis für die in verteilten Revisionskontrollsystemen über Repository-Klone leicht erzeugbare mehrsträngige Revisions-History ist der Verzicht auf die fortlaufende Nummerierung der Versionen. Schließlich führen in einem verzweigten Baum Pfade mit unterschiedlicher Knotenzahl zum gleichen Commit. Git, Mercurial und Bazaar benutzen daher eindeutige Hashes, um Revisionen zu identifizieren.
Die unhandlichen Hashes darf der Anwender dabei abkürzen, solange sie eindeutig bleiben. Git bietet als Ersatz für durchlaufende Nummerierung die Notation »~3«
, um in Befehlen auf die drittletzte Revision zu verweisen. Mercurial weist Check-ins zusätzlich zum eindeutigen Hash eine fortlaufende Nummer zu, die allerdings nur für ein bestimmtes Repository gilt und daher zu Missverständnissen führen kann.
Wie bei Git gibt es Mercurial-Plugins für die IDEs Eclipse und Netbeans, die jedoch etwas ausgereifter wirken als ihre Git-Pendants. Von der Windows-Software Tortoisehg [12] gibt es eine Linux-Variante, die sich in den Gnome-Dateimanager einklinkt (Abbildung 3). Wie Git bringt auch Mercurial ein einfaches Webfrontend mit, das immerhin einen Diff-Viewer mit Syntax Highlighting bietet. Auch Vi- und Emacs-Anhänger werden im Mercurial-Wiki fündig [13].
Diesen Artikel als PDF kaufen
Express-Kauf als PDF
Umfang: 5 Heftseiten
Preis € 0,99
(inkl. 19% MwSt.)
Als digitales Abo
Weitere Produkte im Medialinx Shop »
Versandartikel
Onlineartikel
Alle Rezensionen aus dem Linux-Magazin
- Buecher/07 Bücher über 3-D-Programmierung sowie die Sprache Dart
- Buecher/06 Bücher über Map-Reduce und über die Sprache Erlang
- Buecher/05 Bücher über Scala und über Suchmaschinen-Optimierung
- Buecher/04 Bücher über Metasploit sowie über Erlang/OTP
- Buecher/03 Bücher über die LPI-Level-2-Zertifizierung
- Buecher/02 Bücher über Node.js und über nebenläufige Programmierung
- Buecher/01 Bücher über Linux-HA sowie über PHP-Webprogrammierung
- Buecher/12 Bücher über HTML-5-Apps sowie Computer Vision mit Python
- Buecher/11 Bücher über Statistik sowie über C++-Metaprogrammierung
- Buecher/10 Bücher zu PHP-Webbots sowie zur Emacs-Programmierung
Insecurity Bulletin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...





