graphlog: add a way to test the 'groupbranchiter' function
authorPierre-Yves David <pierre-yves.david@fb.com>
Fri, 14 Nov 2014 17:37:59 +0000
changeset 23565 996c01bfbec4
parent 23564 f7ce0837eefd
child 23566 fee7a30cfdf5
graphlog: add a way to test the 'groupbranchiter' function We add an experimental config option to use the topological sorting. I first tried to hook the 'groupbranchiter' function in the 'sort' revset but this was useless because graphlog enforces revision number sorting :( As the goal is to advance on the topological iteration logic, I see this experimental option as a good way to move forward. We have to use turn the iterator into a list because the graphlog is apparently not ready for pure iterator input yet.
mercurial/graphmod.py
tests/test-glog-topological.t
--- a/mercurial/graphmod.py	Thu Sep 04 18:19:32 2014 +0200
+++ b/mercurial/graphmod.py	Fri Nov 14 17:37:59 2014 +0000
@@ -199,6 +199,9 @@
     lowestrev = revs.min()
     gpcache = {}
 
+    if repo.ui.configbool('experimental', 'graph-topological', False):
+        revs = list(groupbranchiter(revs, repo.changelog.parentrevs))
+
     for rev in revs:
         ctx = repo[rev]
         parents = sorted(set([p.rev() for p in ctx.parents()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-glog-topological.t	Fri Nov 14 17:37:59 2014 +0000
@@ -0,0 +1,58 @@
+This test file aims at test topological iteration and the various configuration it can has.
+
+  $ cat >> $HGRCPATH << EOF
+  > [ui]
+  > logtemplate={rev}\n
+  > EOF
+
+On this simple example, all topological branch are displayed in turn until we
+can finally display 0. this implies skipping from 8 to 3 and coming back to 7
+later.
+
+  $ hg init test01
+  $ cd test01
+  $ hg unbundle $TESTDIR/bundles/remote.hg
+  adding changesets
+  adding manifests
+  adding file changes
+  added 9 changesets with 7 changes to 4 files (+1 heads)
+  (run 'hg heads' to see heads, 'hg merge' to merge)
+
+  $ hg log -G
+  o  8
+  |
+  | o  7
+  | |
+  | o  6
+  | |
+  | o  5
+  | |
+  | o  4
+  | |
+  o |  3
+  | |
+  o |  2
+  | |
+  o |  1
+  |/
+  o  0
+  
+  $ hg --config experimental.graph-topological=1 log -G
+  o  8
+  |
+  o  3
+  |
+  o  2
+  |
+  o  1
+  |
+  | o  7
+  | |
+  | o  6
+  | |
+  | o  5
+  | |
+  | o  4
+  |/
+  o  0
+