Mercurial

Mercurial ist ein dezentrales Versionskontrollsystem. Aber das kann man auch in unzähligen aus dem Boden sprießenden Publikationen nachlesen. Auf diese Seite möchte ich nur ein paar Befehle notieren, um sie nicht immer wieder neu austesten zu müssen.
Da in Mercurial Tags leichtgewichtig (und damit nur Alias-Namen für einzelne Revisionen sind), kann überall, wo eine Revision erwartet wird, auch der Name eines Tags angegeben werden.
Tag auflösen
$ hg identify --rev X
8fd01150c91d X
Dateien in bare Repositories ermitteln
Über manifest kann eine Liste aller Dateien ausgegeben werden. Dabei ist zu beachten: Wer ein bare Repository (Git-Slang für ein Repository ohne Working Copy) betreibt, sollte unbedingt --rev tip angeben, da manifest sonst de Inhalt der Working Copy (= nichts) ausgibt.
$ hg manifest --rev X
foo.txt
mydir/foo.bar.cpp
mydir/hallo.h
x.y
Über cat kann dann eine einzelne Datei ausgegeben werden.
$ hg cat --rev X foo.txt
Hallo Welt!
Mit der Working Copy spielen
$ hg update null <--- entfernt die Working Copy
$ hg update --rev X <--- erzeugt eine Working Copy @ Revision X
Log maschinenlesbar ausgeben
Über das wundervolle Template-System kann die Ausgabe des Logs zur Weiterverarbeitung vereinfacht werden. Der folgende Befehl gibt die letzten 5 Revisionen aus.
$ hg log -l 5 --template "{rev}:{node} {date|shortdate} {desc|firstline}\n"
193:f790e6dad6d524bba007f7689404a9b275bcfe98 2010-03-17 Beschreibung
192:6f630619544beccd922d9334545f62a306595ca2 2010-03-17 foo
191:2c57be4c2441bacfb1fcce9e267f5b178f55f697 2010-03-17 Added tag v1.2.7
190:3cef2ca3955862119d059b3781aff85aae718024 2010-03-17 Hallo Welt
189:e38cbd5c999cb3887be32fc50e8b0697e65b5e6a 2010-03-17 Bugfixes
