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

Durham Goode durham at fb.com
Tue Mar 8 12:42:55 EST 2016


Your change helps a bunch in the case where ancestors aren't present, 
but that's pretty rare in our code base at least (since we have very few 
merges).  Here is the before and after smartlog output from my hg repo: 
https://bpaste.net/show/2093d7bad9c1

I actually find the dashed line detracts from the general glance-ability 
of the data, and am not sure we'd want to replace smartlog with this 
output just yet.  Is there a config option to disable these line stylings?

On 3/8/16 6:03 AM, Martijn Pieters wrote:
> On 8 March 2016 at 08:16, Durham Goode <durham at fb.com> wrote:
>> Could you provide some examples in the commit message, or an additional
>> email with a link to a paste so we can see what the results look like?  It's
>> hard to give feedback on the output with only the test patches to go by.
>> I'm worried that in smartlog all the lines will be dotted, which will make
>> their presence distracting and less informative.
>>
>> For the smartlog functionality that injects extra nodes, what's the plan
>> there?
> Smartlog will no longer inject extra nodes. Instead of
>
> o  9974b8  danek  remote/@
> |  tests: Solaris grep doesn't add a trailing newline when it's missing
> |
> .
> .
> |
> o  158bdc  timeless  @ stable
> |  shelve: lowercase flag description
> |
>
> smartlog would show
>
> o  9974b8  danek  remote/@
> :  tests: Solaris grep doesn't add a trailing newline when it's missing
> :
> o  158bdc  timeless  @  stable
> |  shelve: lowercase flag description
> ~
>
> (actual output from a hg sl command in my mercurial working copy, just
> the last two entries). The above shows both a grandparent relationship
> (where smartlog injected an extra node to render the two dots) and a
> missing parent relationship (where smartlog and hg log -G draw a line
> that just peters out).
>
> As for a larger example, this is a cut-down version of the test in
> test-glog.t; as it was originally before my changes:
>
>    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
>    | | | | |
>
> Changing the style of edge lines based on the relationship turns that into:
>
>    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
>    . . . . .
>
> So edges that lead to a grandparent (intermediate nodes are missing)
> are depicted using : lines. Edges to nodes that are not part of the
> graph at all are depicted as . lines. For example, node 27 is not part
> of the graph, but 21, an ancestor to 27, is, so the edge between 32
> and 21 is drawn as a : dotted line. The same applies for node 18
> between 21 and 22. Nodes 0, 1, 15, 17 and 29, are all missing from the
> graph, edges that try to connect to those are drawn as . dotted lines.
>
> The big win comes from then terminating missing-parent edges early:
>
>    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
>
>



More information about the Mercurial-devel mailing list