Mercurial

Mercurial ist ein Versionskontrollsystem, welches eine verteilte Versionskontrolle realisiert. Dabei steht jedem Anwender sein eigenes, lokales Repository (engl. Behälter) zur Verfügung, in das dann die entsprechenden Dateien und diesbezügliche Änderungen eingepflegt werden. Mercurial ist plattformunabhängig und wird im Wesentlichen auf Basis der Programmiersprache Python implementiert.


Die jeweils aktuelle Version (derzeit Version 1.4.2) steht als Open-Source-Software unter dem u.g. Link zur Verfügung. Seit Beginn der Entwicklung im Jahre 2005, u.a. initiiert durch Matt Mackall, haben eine Reihe von bekannten Open-Source-Projekten wie beispielsweise NetBeans, Mozilla ( Firefox, Thunderbird etc.), OpenSolaris oder die Python-Community Mercurial eingesetzt. Für Entwicklungsumgebungen wie NetBeans oder Eclipse steht ein entsprechender IDE-Support zur Verfügung.

Die Entwicklung von Mercurial

Der Startpunkt der Entwicklung von Mercurial war, dass die Firma Bitmover die lizenzrechtlichen Bedingungen für ihr sehr populäres Versionskontrollsystem Bitkeeper so änderte, dass Bitkeeper nicht mehr länger als Open-Source-Software zu beziehen war. Das veranlasste insbesondere die sehr aktive Linux-Community - die Bitkeeper u.a. in der Kernel-Entwicklung verwendete - nach Alternativen zu suchen. Daraus entwickelten sich zwei entscheidende Wege:

  • mit Matt Mackall, der die Entwicklung von Mercurial startete und
  • der von Linus Thorvald präferierte Weg, für die Linux-Community mit Git ein eigenes Versionskontrollsystem
zu entwickeln. Die Entwicklung der beiden Systeme erfolgte quasi parallel, so dass heute Mercurial auch Anwendung in der Kernel-Entwicklung von Linux findet, obwohl dort Git der offizielle Standard ist.

Das Ziel von Mercurial und Git war letztendlich das Gleiche - die Realisierung eines Verteilten Versionskontrollsystems (Distributed Version Control System, DVCS). Da der Entwickler nicht auf eine Netzwerkverbindung angewiesen ist, sind die meisten Operationen effizienter als beispielsweise bei Versionskontrollsystemen wie Concurrent Version System (CVS) oder Subversion, da die Operationen lokal ausgeführt werden. Jeder Entwickler arbeitet auf seinem eigenen Repository.

Clone-Architektur von Mercurial

Clone-Architektur von Mercurial

Wie aus der Abbildung ersichtlich, wird bei Mercurial für das Repository an dem der Anwender arbeiten will, eine Clone erstellt, also eine komplett arbeitsfähige Kopie. Hier können dann Revisions-Änderungen (Change Sets) oder andere Operationen ablaufen. Für die Nutzung eines zentralen Archives steht dann auch eine Web-Schnittstelle - mit der Operation hg serve - zur Verfügung. Es können somit beliebige Hierarchien von Archiven abgebildet werden. Wichtig dabei ist aber, dass jeder Entwickler die Infrastruktur des DVCS-Netzes kennt. Zusätzlich muss in einer solchen Struktur natürlich mehr "zusammengeführt, verschmolzen" (gemergt) werden, als bei einer zentralen Versionskontrolle. Aber mit hgsubversion steht eine Erweiterung zum Read-/Write-Zugriff auf Subversion Repositories zur Verfügung.

Mercurial und Python

Mercurial ist eine Implementierung in der Programmiersprache Python, ergänzt um eine in der Programmiersprache C geschriebene binäre Version des Unix-Programms diff, zur Bestimmung der Unterschiede zwischen zwei verschiedenen Dateien. Grundsätzlich unterstützt die Versionskontrolle sowohl Text- wie auch Binär-Dateien und ist unabhängig von der Größe eines Projekts. Die Zusammenführung von zwei verschiedenen Datei-Versionen in eine gemeinsame Datei (Merging) realisiert Mercurial sowohl automatisch als auch durch externe Programme wie KDiFF3, TortoiseMerge, FileMerge oder P4Merge. Mercurial ist kommandozeilenorientiert und alle Kommandos beginnen traditionell mit dem Atomsymbol von Quecksilber hg (engl. Mercury).

Mercurial wird bereits von vielen großen Open-Source-Projekten verwendet. Nunmehr verwendet auch Google Mercurial zur Organisation ihres Codes. Ausschlaggebend für diese Entscheidung waren der einfache Befehlssatz und demzufolge die leichte Erlernbarkeit von Mercurial sowie die "besten Protokoll- und Performance-Eigenschaften bei der Unterstützung von HTTP", was aus einer entsprechenden Analyse hervorgeht.

http://selenic.com/mercurial

Informationen zum Artikel
Deutsch: Mercurial
Englisch:
Veröffentlicht: 08.11.2013
Wörter: 569
Tags: #Analyse
Links: Befehlssatz, Binär, Code, CVS (concurrent version system), Datei