Über den Status quo verteilter Versionsverwaltungssysteme

Seite 3: Der Einstieg in Mercurial

Inhaltsverzeichnis

Die Installation von Mercurial gestaltet sich einfach. Unter Windows stehen Installer für 32- und 64-bit zur Verfügung, für verschiedene Linux-Distributionen RPM- und Deb-Pakete; auch an die Benutzer von Mac OS X wurde gedacht. Unter Ubuntu sollte der Leser, um möglichst die letzte stabile Version auf dem System zu haben, zuerst das Paket-Repository einbinden und anschließend das Mercurial-Paket installieren:

$ sudo add-apt-repository ppa:mercurial-ppa/releases
$ sudo apt-get install mercurial

Mercurial bedankt sich dann nach der Installation:

$ hg --version 
Mercurial Distributed SCM (version 1.8)

Nebenbei bemerkt ist "Hg" das Symbol für Hydrargyrum, dem gemeinen deutschsprachigen Mitmenschen auch bekannt als Quecksilber (englisch Mercury).

Soll TortoiseHg ebenfalls installiert werden, stehen hierfür Windows-Binaries auf der Download-Seite des Projekts zur Verfügung. Unter Ubuntu sollten hierzu erneut Repositories eingebunden werden. Dafür stehen drei zur Verfügung, wobei der Autor Releases und Stable Snapshots verwendet hat.

sudo add-apt-repository ppa:tortoisehg-ppa/releases
sudo add-apt-repository ppa:tortoisehg-ppa/stable-snapshots
sudo apt-get install tortoisehg
sudo apt-get install tortoisehg-nautilus

Mit dem letzten Befehl werden die Erweiterungen für Nautilus, den Standard-Dateibrowser von Ubuntu, installiert. (Wichtiger Hinweis für Nautilus-User: Durch die Installation von TortoiseHg ist eine parallele Nutzung von RabbitVCS aufgrund einer Inkompatibilität nicht möglich. Eine Deinstallation von TortoiseHg sollte RabbitVCS wieder zum Leben erwecken, ebenso der Umweg über Thunar für RabbitVCS, sodass in diesem analog zu TortoiseSVN im Kontextmenü des Dateibrowsers alle Befehle zur Verfügung stehen.)

Da hier mit der Kommandozeile gearbeitet wird, ist es sinnvoll, in einem ersten Schritt Mercurial den eigenen Benutzernamen mitzuteilen. Hierzu ist unter Windows die Datei mercurial.ini beziehungsweise unter Linux .hgrc zu bearbeiten:

[ui]
merge = meld
username = hcguersoy <guersoy@lendinarax>

Wie zu sehen, wurde eine zusätzliche Zeile für ein Merge-Tool, in diesem Fall das 3-Wege-Merge-Werkzeug von Gnome2 meld, eingetragen.

Um ein lokales Repository einzurichten, reicht ein Befehl aus:

$ hg init project1

Hiermit initialisiert man das neue Repository in dem Verzeichnis project1. Falls dieses nicht vorhanden war, legt Mercurial es an. In dem folgenden Beispiel erfolgt ein Wechseln in das Projektverzeichnis, um anschließend eine Datei namens datei1.txt anzulegen. Abschließend wird sie mit einem "add" der Versionsverwaltung hinzugefügt:

$ cd project1
$ vi datei1.txt
$ hg add datei1.txt

Das ist bisher vergleichbar mit den Aktionen, die ein Nutzer unter CVS oder Subversion durchgeführt hätte. Die Datei datei1.txt ist zwar in der Arbeitskopie als zu versionieren markiert, aber tatsächlich noch nicht in das Repository aufgenommen. Das geschieht analog Subversion erst mit einem Commit.

hg commit -m "Datei hinzugefügt"

Wird beim Commit kein Kommentar angegeben, öffnet sich automatisch ein Editor, in dem der Benutzer einen Kommentar eingegeben kann und sollte. Nun hat der Entwickler die Datei zu ändern oder noch weitere Dateien hinzuzufügen. Änderungen nimmt er, wie oben geschehen, mit einem Commit in das Repository auf. Da Mercurial über Transaktionen arbeitet, ist der Nutzer in der Lage, den letzten Commit (im Gegenteil zu einem Commit auf einer Datenbank) rückgängig zu machen:

$ hg rollback 
repository tip rolled back to revision 1 (undo commit)
working directory now based on revision 1

Angeschaut sei nun die Historie der Datei:

$ hg log 
Änderung: 1:f0f560a3ae27
Marke: tip
Nutzer: hcguersoy <guersoy@lendinarax>
Datum: Fri Mar 11 10:35:13 2011 +0100
Zusammenfassung: Kleine Änderung vorgenommen
Änderung:        0:3ce8efc342ae 
Nutzer: hcguersoy <guersoy@lendinarax>
Datum: Fri Mar 11 10:10:12 2011 +0100
Zusammenfassung: Datei hinzugefügt

Deutlich zu sehen ist, wie Mercurial die Revisionsnummer vergeben hat: eine fortlaufende lokale und eine zwölfstellige Repräsentation des SHA1-Hashes. Soll es den vollständigen Hash-Wert anzeigen, kann das mit hg --debug log erfolgen. Die lokale Revision 1 enthält als zusätzliche Information das Attribut Marke. Es handelt sich um nichts anderes als einen "Tag". Die Marke beziehungsweise der Tag "tip" liegt dabei immer auf der aktuellen Version. Der Hauptzweig hat übrigens den Namen "default" (vergleichbar mit "trunk" in Subversion).