[PATCH 3 of 3] graphmod: use different styles for different edge types

Martijn Pieters mj at zopatista.com
Tue Feb 23 09:18:31 EST 2016


On 20 February 2016 at 14:33, Pierre-Yves David
<pierre-yves.david at ens-lyon.org> wrote:
> As for non-parent, We should probably not pick a different kind of line
> there, but just alter the grapher to not make the line live forever. Having
> lines that goes nowhere "die" as soon as possible would be valuable.

I'm certainly looking into early elimination for missing-parent lines.
How does this a solid line ending in a `~` look like? Samples:

One line of output per node:

o    merge, one parent missing
|\
| ~
o    single parent, missing
|
~

Multiple lines:

o    summary: Merge, one parent missing
|\   changeset:   20:d30ed6450e32
| ~  parent:      18:1aa84d96232a
|    parent:      21:d42a756af44d
|    user:        test
|
o    summary: single parent, missing
|    changeset:   21:d42a756af44d
~    parent:      19:31ddc2c1573b
     user:        test

Note that the missing-parent line ends early.

This has a huge impact on a big graph with loads of missing parents;
this one comes from test-glog.t (line 940 and on):

  $ hg log -G -r 'file("a")' -m
  o    changeset:   32:d06dffa21a31
  |\   parent:      27:886ed638191b
  | :  parent:      31:621d83e11f67
  | :  user:        test
  | :  date:        Thu Jan 01 00:00:32 1970 +0000
  | :  summary:     (32) expand
  | :
  o :  changeset:   31:621d83e11f67
  |\:  parent:      21:d42a756af44d
  | :  parent:      30:6e11cd4b648f
  | :  user:        test
  | :  date:        Thu Jan 01 00:00:31 1970 +0000
  | :  summary:     (31) expand
  | :
  o :    changeset:   30:6e11cd4b648f
  |\ \   parent:      28:44ecd0b9ae99
  | | :  parent:      29:cd9bb2be7593
  | ~ :  user:        test
  |   :  date:        Thu Jan 01 00:00:30 1970 +0000
  |   :  summary:     (30) expand
  |   :
  o   :  changeset:   28:44ecd0b9ae99
  |\  :  parent:      1:6db2ef61d156
  | ~ :  parent:      26:7f25b6c2f0b9
  |   :  user:        test
  |   :  date:        Thu Jan 01 00:00:28 1970 +0000
  |   :  summary:     (28) merge zero known
  |   :
  o   :  changeset:   26:7f25b6c2f0b9
  |\  :  parent:      18:1aa84d96232a
  | | :  parent:      25:91da8ed57247
  | | :  user:        test
  | | :  date:        Thu Jan 01 00:00:26 1970 +0000
  | | :  summary:     (26) merge one known; far right
  | | :
  | o-+  changeset:   25:91da8ed57247
  | | :  parent:      21:d42a756af44d
  | | :  parent:      24:a9c19a3d96b7
  | | :  user:        test
  | | :  date:        Thu Jan 01 00:00:25 1970 +0000
  | | :  summary:     (25) merge one known; far left
  | | :
  | o :  changeset:   24:a9c19a3d96b7
  | | :  parent:      0:e6eb3150255d
  | | :  parent:      23:a01cddf0766d
  | | :  user:        test
  | | :  date:        Thu Jan 01 00:00:24 1970 +0000
  | | :  summary:     (24) merge one known; immediate right
  | | :
  | o  \   changeset:   23:a01cddf0766d
  | |\  :  parent:      1:6db2ef61d156
  | | ~ :  parent:      22:e0d9cccacb5d
  | |   :  user:        test
  | |   :  date:        Thu Jan 01 00:00:23 1970 +0000
  | |   :  summary:     (23) merge one known; immediate left
  | |   :
  | o  /   changeset:   22:e0d9cccacb5d
  | |\:    parent:      18:1aa84d96232a
  |/ /     parent:      21:d42a756af44d
  | :      user:        test
  | :      date:        Thu Jan 01 00:00:22 1970 +0000
  | :      summary:     (22) merge two known; one far left, one far right
  | :
  | o    changeset:   21:d42a756af44d
  | |\   parent:      19:31ddc2c1573b
  | | |  parent:      20:d30ed6450e32
  | | |  user:        test
  | | |  date:        Thu Jan 01 00:00:21 1970 +0000
  | | |  summary:     (21) expand
  | | |
  +---o  changeset:   20:d30ed6450e32
  | |    parent:      0:e6eb3150255d
  | |    parent:      18:1aa84d96232a
  | |    user:        test
  | |    date:        Thu Jan 01 00:00:20 1970 +0000
  | |    summary:     (20) merge two known; two far right
  | |
  | o    changeset:   19:31ddc2c1573b
  | |\   parent:      15:1dda3f72782d
  | | |  parent:      17:44765d7c06e0
  | | |  user:        test
  | | |  date:        Thu Jan 01 00:00:19 1970 +0000
  | | |  summary:     (19) expand
  | | |
  o | |  changeset:   18:1aa84d96232a
  | | |  parent:      1:6db2ef61d156
  |/ /   parent:      15:1dda3f72782d
  | |    user:        test
  | |    date:        Thu Jan 01 00:00:18 1970 +0000
  | |    summary:     (18) merge two known; two far left
  | |
  | o    changeset:   17:44765d7c06e0
  | |\   parent:      12:86b91144a6e9
  | | |  parent:      16:3677d192927d
  | | |  user:        test
  | | |  date:        Thu Jan 01 00:00:17 1970 +0000
  | | |  summary:     (17) expand
  | | |
  | | o  changeset:   16:3677d192927d
  | |    parent:      0:e6eb3150255d
  | |    parent:      1:6db2ef61d156
  | |    user:        test
  | |    date:        Thu Jan 01 00:00:16 1970 +0000
  | |    summary:     (16) merge two known; one immediate right, one near right
  | |
  o |    changeset:   15:1dda3f72782d
  |\ \   parent:      13:22d8966a97e3
  | | |  parent:      14:8eac370358ef
  | | |  user:        test
  | | |  date:        Thu Jan 01 00:00:15 1970 +0000
  | | |  summary:     (15) expand
  | | |
  | o |  changeset:   14:8eac370358ef
  | |/   parent:      0:e6eb3150255d
  | |    parent:      12:86b91144a6e9
  | |    user:        test
  | |    date:        Thu Jan 01 00:00:14 1970 +0000
  | |    summary:     (14) merge two known; one immediate right, one far right
  | |
  o |    changeset:   13:22d8966a97e3
  |\ \   parent:      9:7010c0af0a35
  | | |  parent:      11:832d76e6bdf2
  | | |  user:        test
  | | |  date:        Thu Jan 01 00:00:13 1970 +0000
  | | |  summary:     (13) expand
  | | |
  +---o  changeset:   12:86b91144a6e9
  | |    parent:      1:6db2ef61d156
  | |    parent:      9:7010c0af0a35
  | |    user:        test
  | |    date:        Thu Jan 01 00:00:12 1970 +0000
  | |    summary:     (12) merge two known; one immediate right, one far left
  | |
  | o    changeset:   11:832d76e6bdf2
  | |\   parent:      6:b105a072e251
  | | |  parent:      10:74c64d036d72
  | | |  user:        test
  | | |  date:        Thu Jan 01 00:00:11 1970 +0000
  | | |  summary:     (11) expand
  | | |
  +---o  changeset:   10:74c64d036d72
  | |/   parent:      0:e6eb3150255d
  | |    parent:      6:b105a072e251
  | |    user:        test
  | |    date:        Thu Jan 01 00:00:10 1970 +0000
  | |    summary:     (10) merge two known; one immediate left, one near right
  | |
  o |    changeset:   9:7010c0af0a35
  |\ \   parent:      7:b632bb1b1224
  | | |  parent:      8:7a0b11f71937
  | | |  user:        test
  | | |  date:        Thu Jan 01 00:00:09 1970 +0000
  | | |  summary:     (9) expand
  | | |
  | o |  changeset:   8:7a0b11f71937
  |/| |  parent:      0:e6eb3150255d
  | ~ |  parent:      7:b632bb1b1224
  |   |  user:        test
  |   |  date:        Thu Jan 01 00:00:08 1970 +0000
  |   |  summary:     (8) merge two known; one immediate left, one far right
  |   |
  o   |  changeset:   7:b632bb1b1224
  |\  |  parent:      2:3d9a33b8d1e1
  | ~ |  parent:      5:4409d547b708
  |   |  user:        test
  |   |  date:        Thu Jan 01 00:00:07 1970 +0000
  |   |  summary:     (7) expand
  |  /
  | o  changeset:   6:b105a072e251
  |/   parent:      2:3d9a33b8d1e1
  |    parent:      5:4409d547b708
  |    user:        test
  |    date:        Thu Jan 01 00:00:06 1970 +0000
  |    summary:     (6) merge two known; one immediate left, one far left
  |
  o    changeset:   5:4409d547b708
  |\   parent:      3:27eef8ed80b4
  | ~  parent:      4:26a8bac39d9f
  |    user:        test
  |    date:        Thu Jan 01 00:00:05 1970 +0000
  |    summary:     (5) expand
  |
  o  changeset:   4:26a8bac39d9f
  |  parent:      1:6db2ef61d156
  ~  parent:      3:27eef8ed80b4
     user:        test
     date:        Thu Jan 01 00:00:04 1970 +0000
     summary:     (4) merge two known; one immediate left, one immediate right

There are still things to be worked out, note how the grandparent line
around nodes 23 and 22 may need tweaking (this was hand-drawn, no code
yet). And yet it is a lot lighter than the current version, which ends
on 5 missing parent lines.

-- 
Martijn Pieters


More information about the Mercurial-devel mailing list