Shortlog zur Arbeitserleichterung

posted by Steve Losh on October 7, 2009

Viele Befehle von Mercurial die eine Ausgabe liefern sind anpassbar durch die Option --template. Für einen tieferen Einblick in die Möglichkeiten die Vorlagen bieten empfielt sich hg help templating.

Für diesen Tipp verwenden wir eine ganz kleine Vorlage die sich als äusserst hilfreich erweisen wird.

Eine Vorlage für Shortlog

Lassen Sie uns ein ganz einfaches Beispiel einer Vorlage anschauen, wie sie bei hg log verwendet wird:

hg log --template '{rev}:{node|short} {desc|firstline}\n'

Dieser Befehl wird alle Änderungen eines ChangeSets im Repository ausgeben, eines pro Zeile mit der Revisions Nummer, dem Hash und der Zusammenfassung. Dies sollte ungefähr so aussehen:

81:966ff708eb3a Add the Shortcuts for Specifying Revisions beginner tip.
80:3dca217e76a2 Change the title to something better.
79:4edca6026448 Change the title to something more description.
78:bea31254eba5 Add the Graphlog beginner tip.
77:5ef6bf0c5081 Add scrollbars to code blocks if needed.
76:dd1fa17eaa1f Reduce the number of tips on the front page to 4 per category.
75:f3d5a6d9d5a5 Fix the nested <p> tag issue.
74:e6a76edf8032 Add the Creating Repositories Over SSH advanced tip.
73:a4f1c617f01f Reword "N.B." to "Note" because it looks better before the colon.
72:e44939482007 Mention the feature requirement for HTTP User Auth.
... a lot more lines ...

Dies kann Ihnen dabei helfen einen Überblick zu bekommen ohne von den ganzen Informationen erschlagen zu werden. Sie können diesen Alias in ihre ~/.hgrc Datei einfügen:

[alias]
slog = log --template '{rev}:{node|short} {desc|firstline}\n'

Nun können Sie mit hg slog eine kompakte Änderungsübersicht anzeigen lassen. Wir sind aber noch nicht ganz fertig.

Zählen

Es gibt etwas sehr spezielles zu diesem Template: jeder Logeintrag benötigt nur eine Zeile. Dies bedeutet, dass Sie den UNIX Befehl wc (wordcount - Wörter zählen) zum zählen der Zeilen und damit der ChangeSets nutzen können.

Als Beispiel wollen wir die Änderungen im Repository zählen:

$ hg slog | wc -l
  82

Dies ist allerdings ziemlich unnütz, da die gleiche Information als Revisionsnummer bei der letzten Änderung angezeigt wird. Interessant wird es wenn wir die Filtermöglichkeiten von hg log nutzen um nur einen Teil der Änderungen auszuwählen.

Um die Anzahl merges zu erfahren:

hg slog --only-merges | wc -l

Um alle non-merges zu zählen:

hg slog --no-merges | wc -l

Um zu zählen wie viele commits von ‘Steve’ gemacht wurden:

hg slog --user Steve | wc -l

Um alle commits der letzten 3 Tage zu zählen:

hg slog --date -3 | wc -l

Um alle commits seit dem 1. Februar zu zählen:

hg slog --date '>Feb 1' | wc -l

Um zu zählen welche non-merges von Steve seit März commited wurden:

hg slog --no-merges --user Steve --date '>Mar 1' | wc -l

Die Verwendung einer Vorlage die das ChangeSet auf einer einzigen Zeile ausgibt ermöglicht das Zählen von allem was mit hg log gefiltert werden kann. Sie können hg help log aufrufen ummehr über die Filtermöglichkeiten zu erfahren.

Das Hinzufügen von einem hg shortlog Alias wird ihnen einige raffinierte Möglichkeiten eröffen.