Behalten Sie ihren Verstand bei Graphlog
posted by Steve Losh on October 3, 2009
Einer der ersten Befehle von Mercurial die Sie lernen ist hg log. Es zeigt
das Protokoll aller Änderungen im Repository an. Hier ist ein Beispiel wie die
Ausgabe aussehen kann:
$ hg log
changeset: 2:7b393734ccf7
tag: tip
user: Steve Losh <steve@stevelosh.com>
date: Fri Oct 02 23:42:13 2009 -0400
summary: Do some more work.
changeset: 1:26ac605206b4
user: Steve Losh <steve@stevelosh.com>
date: Fri Oct 02 23:42:08 2009 -0400
summary: Do some work.
changeset: 0:ef4afb3d9699
user: Steve Losh <steve@stevelosh.com>
date: Fri Oct 02 23:42:00 2009 -0400
summary: Initial commit.
$
Gar nicht so schlecht. Es funktioniert gut wenn Sie eine gerade Linie von Änderungen ohne Verzweigungen haben. Sobald Sie Verzweigungen benutzen, wird es sehr hart dem Verlauf zu folgen. Ein weiterer Blick auf die Ausgabe nach dem einchecken einigen weiterer Änderungen:
$ hg log
changeset: 8:b58f37a6f0af
tag: tip
parent: 3:fee36cf81486
user: Steve Losh <steve@stevelosh.com>
date: Fri Oct 02 23:48:55 2009 -0400
summary: Oh god the server is on fire fix it now.
changeset: 7:8f54b4d0d885
parent: 5:ce29b9e5288f
parent: 6:1dff6084cda4
user: Steve Losh <steve@stevelosh.com>
date: Fri Oct 02 23:48:20 2009 -0400
summary: Go back to the old wording.
changeset: 6:1dff6084cda4
parent: 4:3c52ba0b77af
user: Steve Losh <steve@stevelosh.com>
date: Fri Oct 02 23:47:23 2009 -0400
summary: Actually, the wording was fine.
changeset: 5:ce29b9e5288f
user: Steve Losh <steve@stevelosh.com>
date: Fri Oct 02 23:46:21 2009 -0400
summary: Add some content.
changeset: 4:3c52ba0b77af
parent: 2:7b393734ccf7
user: Steve Losh <steve@stevelosh.com>
date: Fri Oct 02 23:46:04 2009 -0400
summary: Change some wording around.
changeset: 3:fee36cf81486
user: Steve Losh <steve@stevelosh.com>
date: Fri Oct 02 23:45:50 2009 -0400
summary: Fix a horrific bug.
changeset: 2:7b393734ccf7
user: Steve Losh <steve@stevelosh.com>
date: Fri Oct 02 23:42:13 2009 -0400
summary: Do some more work.
changeset: 1:26ac605206b4
user: Steve Losh <steve@stevelosh.com>
date: Fri Oct 02 23:42:08 2009 -0400
summary: Do some work.
changeset: 0:ef4afb3d9699
user: Steve Losh <steve@stevelosh.com>
date: Fri Oct 02 23:42:00 2009 -0400
summary: Initial commit.
$
Nun ist es nicht mehr so einfach zu sehen was vor sich geht. Es gibt mindestens
einen Merge (ChangeSet 7 hat 2 Eltern), somit muss es irgendwo eine
Verzweigung geben. Können Sie diese erkennen oder macht Sie die Suche danach verrückt?
Um das Protokoll verständlicher zu machen, können Sie die graphlog
Erweiterung durch das Bearbeiten der ~/.hgrc Datei aktivieren:
[extensions]
graphlog =
Nun können Sie mit hg glog eine ASCII-Grafik des Protokolls anzeigen lassen:
$ hg glog
@ changeset: 8:b58f37a6f0af
| tag: tip
| parent: 3:fee36cf81486
| user: Steve Losh <steve@stevelosh.com>
| date: Fri Oct 02 23:48:55 2009 -0400
| summary: Oh god the server is on fire fix it now.
|
| o changeset: 7:8f54b4d0d885
| |\ parent: 5:ce29b9e5288f
| | | parent: 6:1dff6084cda4
| | | user: Steve Losh <steve@stevelosh.com>
| | | date: Fri Oct 02 23:48:20 2009 -0400
| | | summary: Go back to the old wording.
| | |
| | o changeset: 6:1dff6084cda4
| | | parent: 4:3c52ba0b77af
| | | user: Steve Losh <steve@stevelosh.com>
| | | date: Fri Oct 02 23:47:23 2009 -0400
| | | summary: Actually, the wording was fine.
| | |
| o | changeset: 5:ce29b9e5288f
| |/ user: Steve Losh <steve@stevelosh.com>
| | date: Fri Oct 02 23:46:21 2009 -0400
| | summary: Add some content.
| |
| o changeset: 4:3c52ba0b77af
| | parent: 2:7b393734ccf7
| | user: Steve Losh <steve@stevelosh.com>
| | date: Fri Oct 02 23:46:04 2009 -0400
| | summary: Change some wording around.
| |
o | changeset: 3:fee36cf81486
|/ user: Steve Losh <steve@stevelosh.com>
| date: Fri Oct 02 23:45:50 2009 -0400
| summary: Fix a horrific bug.
|
o changeset: 2:7b393734ccf7
| user: Steve Losh <steve@stevelosh.com>
| date: Fri Oct 02 23:42:13 2009 -0400
| summary: Do some more work.
|
o changeset: 1:26ac605206b4
| user: Steve Losh <steve@stevelosh.com>
| date: Fri Oct 02 23:42:08 2009 -0400
| summary: Do some work.
|
o changeset: 0:ef4afb3d9699
user: Steve Losh <steve@stevelosh.com>
date: Fri Oct 02 23:42:00 2009 -0400
summary: Initial commit.
$
So können Sie ganz einfach erkennen wo die Verzweigung erfolgte.
Ich persönlich mag eine kompaktere Ausgabe von hg glog, da ich meistens
nicht alle Informationen benötige. Ich habe meine ~/.hgrc Datei so angepasst:
[defaults]
glog = --template 'changeset: {rev}:{node|short} {tags}\nsummary: {desc|firstline|fill68|tabindent|tabindent}\n\n'
Mit dieser Vorlage als Standardeinstellung ergibt hg glog bei mir diese Ausgabe:
$ hg glog
@ changeset: 8:b58f37a6f0af tip
| summary: Oh god the server is on fire fix it now.
|
| o changeset: 7:8f54b4d0d885
| |\ summary: Go back to the old wording.
| | |
| | o changeset: 6:1dff6084cda4
| | | summary: Actually, the wording was fine.
| | |
| o | changeset: 5:ce29b9e5288f
| |/ summary: Add some content.
| |
| o changeset: 4:3c52ba0b77af
| | summary: Change some wording around.
| |
o | changeset: 3:fee36cf81486
|/ summary: Fix a horrific bug.
|
o changeset: 2:7b393734ccf7
| summary: Do some more work.
|
o changeset: 1:26ac605206b4
| summary: Do some work.
|
o changeset: 0:ef4afb3d9699
summary: Initial commit.
$
Für mich ist dies viel einfacher zu lesen und gibt mir dennoch alle notwendigen
Informationen die ich benötige. Wenn ich mehr über eine Änderung wissen will,
verwende ich hg log -r REV oder hg show REV.