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

Durham Goode durham at fb.com
Tue Mar 8 03:16:27 EST 2016


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?

On 3/4/16 12:47 PM, Martijn Pieters wrote:
> # HG changeset patch
> # User Martijn Pieters <mjpieters at fb.com>
> # Date 1457102672 0
> #      Fri Mar 04 14:44:32 2016 +0000
> # Node ID 794d4e68aa4fcfc2da23bfd71ba1294eb82e37c3
> # Parent  ddeb44b0971f0c34b23f5f541c5d9a0b8c6c5892
> graphmod: use different styles for different edge types
>
> Rather than always draw edges as solid lines, use dotted lines for edges that
> do not connect to a parent, and dashed lines when connecting to a grandparent
> (implying missing nodes in between).
>
> This is part of the work towards moving smartlog upstream; currently smartlog
> injects extra nodes into the graph to indicate grandparent relationships (nodes
> elided).
>
> diff --git a/mercurial/graphmod.py b/mercurial/graphmod.py
> --- a/mercurial/graphmod.py
> +++ b/mercurial/graphmod.py
> @@ -31,6 +31,7 @@
>   PARENT = 'P'
>   GRANDPARENT = 'G'
>   MISSINGPARENT = 'M'
> +EDGES = {PARENT: '|', GRANDPARENT: ':', MISSINGPARENT: '.'}
>   
>   def groupbranchiter(revs, parentsfunc, firstbranch=()):
>       """Yield revisions from heads to roots one (topo) branch at a time.
> @@ -390,11 +391,13 @@
>               knownparents.append(parent)
>           else:
>               newparents.append(parent)
> +            state['edges'][parent] = EDGES.get(ptype, '|')
>   
>       ncols = len(seen)
>       nextseen = seen[:]
>       nextseen[nodeidx:nodeidx + 1] = newparents
> -    edges = [(nodeidx, nextseen.index(p)) for p in knownparents if p != nullrev]
> +    edges = [(nodeidx, nextseen.index(p))
> +             for p in knownparents if p != nullrev]
>   
>       while len(newparents) > 2:
>           # ascii() only knows how to add or remove a single column between two
> @@ -418,6 +421,8 @@
>           edges.append((nodeidx, nodeidx + 1))
>       nmorecols = len(nextseen) - ncols
>       seen[:] = nextseen
> +    # remove current node from edge characters, no longer needed
> +    state['edges'].pop(rev, None)
>       yield (type, char, lines, (nodeidx, edges, ncols, nmorecols))
>   
>   def _fixlongrightedges(edges):
> @@ -426,27 +431,28 @@
>               edges[i] = (start, end + 1)
>   
>   def _getnodelineedgestail(
> -        node_index, p_node_index, n_columns, n_columns_diff, p_diff, fix_tail):
> -    if fix_tail and n_columns_diff == p_diff and n_columns_diff != 0:
> +        echars, idx, pidx, ncols, coldiff, pdiff, fix_tail):
> +    if fix_tail and coldiff == pdiff and coldiff != 0:
>           # Still going in the same non-vertical direction.
> -        if n_columns_diff == -1:
> -            start = max(node_index + 1, p_node_index)
> -            tail = ["|", " "] * (start - node_index - 1)
> -            tail.extend(["/", " "] * (n_columns - start))
> +        if coldiff == -1:
> +            start = max(idx + 1, pidx)
> +            tail = echars[idx * 2:(start - 1) * 2]
> +            tail.extend(["/", " "] * (ncols - start))
>               return tail
>           else:
> -            return ["\\", " "] * (n_columns - node_index - 1)
> +            return ["\\", " "] * (ncols - idx - 1)
>       else:
> -        return ["|", " "] * (n_columns - node_index - 1)
> +        remainder = (ncols - idx - 1)
> +        return echars[-(remainder * 2):] if remainder > 0 else []
>   
> -def _drawedges(edges, nodeline, interline):
> +def _drawedges(echars, edges, nodeline, interline):
>       for (start, end) in edges:
>           if start == end + 1:
>               interline[2 * end + 1] = "/"
>           elif start == end - 1:
>               interline[2 * start + 1] = "\\"
>           elif start == end:
> -            interline[2 * start] = "|"
> +            interline[2 * start] = echars[2 * start]
>           else:
>               if 2 * end >= len(nodeline):
>                   continue
> @@ -457,26 +463,29 @@
>                   if nodeline[i] != "+":
>                       nodeline[i] = "-"
>   
> -def _getpaddingline(ni, n_columns, edges):
> -    line = []
> -    line.extend(["|", " "] * ni)
> -    if (ni, ni - 1) in edges or (ni, ni) in edges:
> -        # (ni, ni - 1)      (ni, ni)
> +def _getpaddingline(echars, idx, ncols, edges):
> +    # all edges up to the current node
> +    line = echars[:idx * 2]
> +    # an edge for the current node, if there is one
> +    if (idx, idx - 1) in edges or (idx, idx) in edges:
> +        # (idx, idx - 1)      (idx, idx)
>           # | | | |           | | | |
>           # +---o |           | o---+
> -        # | | c |           | c | |
> +        # | | X |           | X | |
>           # | |/ /            | |/ /
>           # | | |             | | |
> -        c = "|"
> +        line.extend(echars[idx * 2:(idx + 1) * 2])
>       else:
> -        c = " "
> -    line.extend([c, " "])
> -    line.extend(["|", " "] * (n_columns - ni - 1))
> +        line.extend('  ')
> +    # all edges to the right of the current node
> +    remainder = ncols - idx - 1
> +    if remainder > 0:
> +        line.extend(echars[-(remainder * 2):])
>       return line
>   
>   def asciistate():
>       """returns the initial value for the "state" argument to ascii()"""
> -    return {'seen': [], 'lastcoldiff': 0, 'lastindex': 0}
> +    return {'seen': [], 'edges': {}, 'lastcoldiff': 0, 'lastindex': 0}
>   
>   def ascii(ui, state, type, char, text, coldata):
>       """prints an ASCII graph of the DAG
> @@ -498,9 +507,15 @@
>           in the current revision. That is: -1 means one column removed;
>           0 means no columns added or removed; 1 means one column added.
>       """
> -
>       idx, edges, ncols, coldiff = coldata
>       assert -2 < coldiff < 2
> +
> +    edgemap, seen = state['edges'], state['seen']
> +    # Be tolerant of history issues; make sure we have at least ncols + coldiff
> +    # elements to work with. See test-glog.t for broken history test cases.
> +    echars = [c for p in seen for c in (edgemap.get(p, '|'), ' ')]
> +    echars.extend(('|', ' ') * max(ncols + coldiff - len(seen), 0))
> +
>       if coldiff == -1:
>           # Transform
>           #
> @@ -530,35 +545,33 @@
>       fix_nodeline_tail = len(text) <= 2 and not add_padding_line
>   
>       # nodeline is the line containing the node character (typically o)
> -    nodeline = ["|", " "] * idx
> +    nodeline = echars[:idx * 2]
>       nodeline.extend([char, " "])
>   
>       nodeline.extend(
> -        _getnodelineedgestail(idx, state['lastindex'], ncols, coldiff,
> -                              state['lastcoldiff'], fix_nodeline_tail))
> +        _getnodelineedgestail(
> +            echars, idx, state['lastindex'], ncols, coldiff,
> +            state['lastcoldiff'], fix_nodeline_tail))
>   
>       # shift_interline is the line containing the non-vertical
>       # edges between this entry and the next
> -    shift_interline = ["|", " "] * idx
> +    shift_interline = echars[:idx * 2]
> +    shift_interline.extend(' ' * (2 + coldiff))
> +    count = ncols - idx - 1
>       if coldiff == -1:
> -        n_spaces = 1
> -        edge_ch = "/"
> +        shift_interline.extend('/ ' * count)
>       elif coldiff == 0:
> -        n_spaces = 2
> -        edge_ch = "|"
> +        shift_interline.extend(echars[(idx + 1) * 2:ncols * 2])
>       else:
> -        n_spaces = 3
> -        edge_ch = "\\"
> -    shift_interline.extend(n_spaces * [" "])
> -    shift_interline.extend([edge_ch, " "] * (ncols - idx - 1))
> +        shift_interline.extend(r'\ ' * count)
>   
>       # draw edges from the current node to its parents
> -    _drawedges(edges, nodeline, shift_interline)
> +    _drawedges(echars, edges, nodeline, shift_interline)
>   
>       # lines is the list of all graph lines to print
>       lines = [nodeline]
>       if add_padding_line:
> -        lines.append(_getpaddingline(idx, ncols, edges))
> +        lines.append(_getpaddingline(echars, idx, ncols, edges))
>       lines.append(shift_interline)
>   
>       # make sure that there are as many graph lines as there are
> @@ -566,7 +579,7 @@
>       while len(text) < len(lines):
>           text.append("")
>       if len(lines) < len(text):
> -        extra_interline = ["|", " "] * (ncols + coldiff)
> +        extra_interline = echars[:(ncols + coldiff) * 2]
>           while len(lines) < len(text):
>               lines.append(extra_interline)
>   
> diff --git a/tests/test-commit-amend.t b/tests/test-commit-amend.t
> --- a/tests/test-commit-amend.t
> +++ b/tests/test-commit-amend.t
> @@ -539,11 +539,11 @@
>     |    babar
>     |
>     | o  12:0   2647734878ef   1970-01-01 00:00 +0000   test
> -  | |    fork
> -  | |
> -  o |  11   3334b7925910   1970-01-01 00:00 +0000   test
> -  | |    a''
> -  | |
> +  | .    fork
> +  | .
> +  o .  11   3334b7925910   1970-01-01 00:00 +0000   test
> +  . .    a''
> +  . .
>     $ hg log -Gl 4 --hidden --style=compact
>     @  14[tip]:11   b650e6ee8614   1970-01-01 00:00 +0000   test
>     |    babar
> @@ -552,11 +552,11 @@
>     |/     amend for phase
>     |
>     | o  12:0   2647734878ef   1970-01-01 00:00 +0000   test
> -  | |    fork
> -  | |
> -  o |  11   3334b7925910   1970-01-01 00:00 +0000   test
> -  | |    a''
> -  | |
> +  | .    fork
> +  | .
> +  o .  11   3334b7925910   1970-01-01 00:00 +0000   test
> +  . .    a''
> +  . .
>   
>   Amend with files changes
>   
> @@ -579,11 +579,11 @@
>     |/     amend for phase
>     |
>     | o  12:0   2647734878ef   1970-01-01 00:00 +0000   test
> -  | |    fork
> -  | |
> -  o |  11   3334b7925910   1970-01-01 00:00 +0000   test
> -  | |    a''
> -  | |
> +  | .    fork
> +  | .
> +  o .  11   3334b7925910   1970-01-01 00:00 +0000   test
> +  . .    a''
> +  . .
>   
>   
>   Test that amend does not make it easy to create obsolescence cycle
> diff --git a/tests/test-convert-hg-sink.t b/tests/test-convert-hg-sink.t
> --- a/tests/test-convert-hg-sink.t
> +++ b/tests/test-convert-hg-sink.t
> @@ -370,7 +370,7 @@
>     | o  7 e6d364a69ff1 (draft) "change in dest" files: dest
>     |/
>     o  6 0613c8e59a3d (public) "6: change a" files: a
> -  |
> +  .
>     $ cd ..
>   
>     $ hg convert --filemap filemap source dest --config convert.hg.revs=3:
> diff --git a/tests/test-copy-move-merge.t b/tests/test-copy-move-merge.t
> --- a/tests/test-copy-move-merge.t
> +++ b/tests/test-copy-move-merge.t
> @@ -156,11 +156,11 @@
>   
>     $ hg log -G -f b
>     @  changeset:   3:76024fb4b05b
> -  |  tag:         tip
> -  |  user:        test
> -  |  date:        Thu Jan 01 00:00:00 1970 +0000
> -  |  summary:     copy a->b (2)
> -  |
> +  :  tag:         tip
> +  :  user:        test
> +  :  date:        Thu Jan 01 00:00:00 1970 +0000
> +  :  summary:     copy a->b (2)
> +  :
>     o  changeset:   0:ac82d8b1f7c4
>        user:        test
>        date:        Thu Jan 01 00:00:00 1970 +0000
> diff --git a/tests/test-glog-topological.t b/tests/test-glog-topological.t
> --- a/tests/test-glog-topological.t
> +++ b/tests/test-glog-topological.t
> @@ -66,11 +66,11 @@
>     o  8
>     |
>     o  3
> -  |
> +  :
>     o  1
>     |
>     | o  7
> -  | |
> +  | :
>     | o  5
>     | |
>     | o  4
> diff --git a/tests/test-glog.t b/tests/test-glog.t
> --- a/tests/test-glog.t
> +++ b/tests/test-glog.t
> @@ -940,193 +940,193 @@
>     $ 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:      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:      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:      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
> -  | | | | |
> +  | | . . :  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:      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
> -  | | | | | |
> +  | | . . . :  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:      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
> -  | | | | | |
> +  | . . . :    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
> -  | | | | | |
> +  | . . . |    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:      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
> -  | | | | | |
> +  . . . | |    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
> -  | | | | | |
> +  . . . | |    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
> -  | | | | | |
> +  . . . | |/   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
> -  | | | | | |
> +  . . . | |/   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
> -  | | | | |
> +  . . . |/ /   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
> +  . . . . .
>   
>   
>   Empty revision range - display nothing:
> @@ -1139,20 +1139,20 @@
>   From outer space:
>     $ hg log -G -l1 repo
>     @  changeset:   34:fea3ac5810e0
> -  |  tag:         tip
> -  |  parent:      32:d06dffa21a31
> -  |  user:        test
> -  |  date:        Thu Jan 01 00:00:34 1970 +0000
> -  |  summary:     (34) head
> -  |
> +  .  tag:         tip
> +  .  parent:      32:d06dffa21a31
> +  .  user:        test
> +  .  date:        Thu Jan 01 00:00:34 1970 +0000
> +  .  summary:     (34) head
> +  .
>     $ hg log -G -l1 repo/a
>     @  changeset:   34:fea3ac5810e0
> -  |  tag:         tip
> -  |  parent:      32:d06dffa21a31
> -  |  user:        test
> -  |  date:        Thu Jan 01 00:00:34 1970 +0000
> -  |  summary:     (34) head
> -  |
> +  .  tag:         tip
> +  .  parent:      32:d06dffa21a31
> +  .  user:        test
> +  .  date:        Thu Jan 01 00:00:34 1970 +0000
> +  .  summary:     (34) head
> +  .
>     $ hg log -G -l1 repo/missing
>   
>   #endif
> @@ -1176,10 +1176,10 @@
>     |  summary:     more
>     |
>     o  changeset:   1:5ac72c0599bf
> -  |  user:        test
> -  |  date:        Thu Jan 01 00:00:00 1970 +0000
> -  |  summary:     two
> -  |
> +  .  user:        test
> +  .  date:        Thu Jan 01 00:00:00 1970 +0000
> +  .  summary:     two
> +  .
>   
>   Issue1896: File log with explicit style
>     $ hg log -G --style=default one
> @@ -1277,17 +1277,17 @@
>     $ hg ci -Aqm0
>     $ hg log -G -l2 a
>     o  changeset:   34:fea3ac5810e0
> -  |  parent:      32:d06dffa21a31
> -  |  user:        test
> -  |  date:        Thu Jan 01 00:00:34 1970 +0000
> -  |  summary:     (34) head
> -  |
> -  | o  changeset:   33:68608f5145f9
> -  | |  parent:      18:1aa84d96232a
> -  | |  user:        test
> -  | |  date:        Thu Jan 01 00:00:33 1970 +0000
> -  | |  summary:     (33) head
> -  | |
> +  .  parent:      32:d06dffa21a31
> +  .  user:        test
> +  .  date:        Thu Jan 01 00:00:34 1970 +0000
> +  .  summary:     (34) head
> +  .
> +  . o  changeset:   33:68608f5145f9
> +  . .  parent:      18:1aa84d96232a
> +  . .  user:        test
> +  . .  date:        Thu Jan 01 00:00:33 1970 +0000
> +  . .  summary:     (33) head
> +  . .
>   
>   File + limit + -ra:b, (b - a) < limit:
>     $ hg log -G -l3000 -r32:tip a
> @@ -1298,67 +1298,67 @@
>     |  summary:     (34) head
>     |
>     | o  changeset:   33:68608f5145f9
> -  | |  parent:      18:1aa84d96232a
> -  | |  user:        test
> -  | |  date:        Thu Jan 01 00:00:33 1970 +0000
> -  | |  summary:     (33) head
> -  | |
> -  o |    changeset:   32:d06dffa21a31
> -  |\ \   parent:      27:886ed638191b
> -  | | |  parent:      31:621d83e11f67
> -  | | |  user:        test
> -  | | |  date:        Thu Jan 01 00:00:32 1970 +0000
> -  | | |  summary:     (32) expand
> -  | | |
> +  | .  parent:      18:1aa84d96232a
> +  | .  user:        test
> +  | .  date:        Thu Jan 01 00:00:33 1970 +0000
> +  | .  summary:     (33) head
> +  | .
> +  o .    changeset:   32:d06dffa21a31
> +  .\ \   parent:      27:886ed638191b
> +  . . .  parent:      31:621d83e11f67
> +  . . .  user:        test
> +  . . .  date:        Thu Jan 01 00:00:32 1970 +0000
> +  . . .  summary:     (32) expand
> +  . . .
>   
>   Point out a common and an uncommon unshown parent
>   
>     $ hg log -G -r 'rev(8) or rev(9)'
>     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
> -  | |
> +  | .  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
> +  . .
>   
>   File + limit + -ra:b, b < tip:
>   
>     $ hg log -G -l1 -r32:34 a
>     o  changeset:   34:fea3ac5810e0
> -  |  parent:      32:d06dffa21a31
> -  |  user:        test
> -  |  date:        Thu Jan 01 00:00:34 1970 +0000
> -  |  summary:     (34) head
> -  |
> +  .  parent:      32:d06dffa21a31
> +  .  user:        test
> +  .  date:        Thu Jan 01 00:00:34 1970 +0000
> +  .  summary:     (34) head
> +  .
>   
>   file(File) + limit + -ra:b, b < tip:
>   
>     $ hg log -G -l1 -r32:34 -r 'file("a")'
>     o  changeset:   34:fea3ac5810e0
> -  |  parent:      32:d06dffa21a31
> -  |  user:        test
> -  |  date:        Thu Jan 01 00:00:34 1970 +0000
> -  |  summary:     (34) head
> -  |
> +  .  parent:      32:d06dffa21a31
> +  .  user:        test
> +  .  date:        Thu Jan 01 00:00:34 1970 +0000
> +  .  summary:     (34) head
> +  .
>   
>   limit(file(File) and a::b), b < tip:
>   
>     $ hg log -G -r 'limit(file("a") and 32::34, 1)'
>     o    changeset:   32:d06dffa21a31
> -  |\   parent:      27:886ed638191b
> -  | |  parent:      31:621d83e11f67
> -  | |  user:        test
> -  | |  date:        Thu Jan 01 00:00:32 1970 +0000
> -  | |  summary:     (32) expand
> -  | |
> +  .\   parent:      27:886ed638191b
> +  . .  parent:      31:621d83e11f67
> +  . .  user:        test
> +  . .  date:        Thu Jan 01 00:00:32 1970 +0000
> +  . .  summary:     (32) expand
> +  . .
>   
>   File + limit + -ra:b, b < tip:
>   
> @@ -1368,17 +1368,17 @@
>   
>     $ hg log -G -l10 -r33:34 a
>     o  changeset:   34:fea3ac5810e0
> -  |  parent:      32:d06dffa21a31
> -  |  user:        test
> -  |  date:        Thu Jan 01 00:00:34 1970 +0000
> -  |  summary:     (34) head
> -  |
> -  | o  changeset:   33:68608f5145f9
> -  | |  parent:      18:1aa84d96232a
> -  | |  user:        test
> -  | |  date:        Thu Jan 01 00:00:33 1970 +0000
> -  | |  summary:     (33) head
> -  | |
> +  .  parent:      32:d06dffa21a31
> +  .  user:        test
> +  .  date:        Thu Jan 01 00:00:34 1970 +0000
> +  .  summary:     (34) head
> +  .
> +  . o  changeset:   33:68608f5145f9
> +  . .  parent:      18:1aa84d96232a
> +  . .  user:        test
> +  . .  date:        Thu Jan 01 00:00:33 1970 +0000
> +  . .  summary:     (33) head
> +  . .
>   
>   Do not crash or produce strange graphs if history is buggy
>   
> @@ -1408,18 +1408,18 @@
>     |  summary:     (34) head
>     |
>     | o  changeset:   33:68608f5145f9
> -  | |  parent:      18:1aa84d96232a
> -  | |  user:        test
> -  | |  date:        Thu Jan 01 00:00:33 1970 +0000
> -  | |  summary:     (33) head
> -  | |
> -  o |    changeset:   32:d06dffa21a31
> -  |\ \   parent:      27:886ed638191b
> -  | | |  parent:      31:621d83e11f67
> -  | | |  user:        test
> -  | | |  date:        Thu Jan 01 00:00:32 1970 +0000
> -  | | |  summary:     (32) expand
> -  | | |
> +  | .  parent:      18:1aa84d96232a
> +  | .  user:        test
> +  | .  date:        Thu Jan 01 00:00:33 1970 +0000
> +  | .  summary:     (33) head
> +  | .
> +  o .    changeset:   32:d06dffa21a31
> +  .\ \   parent:      27:886ed638191b
> +  . . .  parent:      31:621d83e11f67
> +  . . .  user:        test
> +  . . .  date:        Thu Jan 01 00:00:32 1970 +0000
> +  . . .  summary:     (32) expand
> +  . . .
>   
>   Test log -G options
>   
> @@ -1796,8 +1796,8 @@
>     $ hg log -G --follow-first e --template '{rev} {desc|firstline}\n'
>     @    6 merge 5 and 4
>     |\
> -  o |  5 add another e
> -  | |
> +  o .  5 add another e
> +  . .
>   
>   Test --copies
>   
> @@ -1875,24 +1875,24 @@
>     $ hg up -q 3
>     $ hg log -G --git --patch b
>     o  changeset:   1:216d4c92cf98
> -  |  user:        test
> -  |  date:        Thu Jan 01 00:00:00 1970 +0000
> -  |  summary:     copy a b
> -  |
> -  |  diff --git a/a b/b
> -  |  copy from a
> -  |  copy to b
> -  |
> +  .  user:        test
> +  .  date:        Thu Jan 01 00:00:00 1970 +0000
> +  .  summary:     copy a b
> +  .
> +  .  diff --git a/a b/b
> +  .  copy from a
> +  .  copy to b
> +  .
>   
>     $ hg log -G --git --stat b
>     o  changeset:   1:216d4c92cf98
> -  |  user:        test
> -  |  date:        Thu Jan 01 00:00:00 1970 +0000
> -  |  summary:     copy a b
> -  |
> -  |   b |  0
> -  |   1 files changed, 0 insertions(+), 0 deletions(-)
> -  |
> +  .  user:        test
> +  .  date:        Thu Jan 01 00:00:00 1970 +0000
> +  .  summary:     copy a b
> +  .
> +  .   b |  0
> +  .   1 files changed, 0 insertions(+), 0 deletions(-)
> +  .
>   
>     $ hg log -G --git --patch --follow b
>     o  changeset:   1:216d4c92cf98
> @@ -1939,32 +1939,32 @@
>     $ hg log -G --git --patch --follow-first e
>     @    changeset:   6:fc281d8ff18d
>     |\   tag:         tip
> -  | |  parent:      5:99b31f1c2782
> -  | |  parent:      4:17d952250a9d
> -  | |  user:        test
> -  | |  date:        Thu Jan 01 00:00:00 1970 +0000
> -  | |  summary:     merge 5 and 4
> -  | |
> -  | |  diff --git a/e b/e
> -  | |  --- a/e
> -  | |  +++ b/e
> -  | |  @@ -1,1 +1,1 @@
> -  | |  -ee
> -  | |  +merge
> -  | |
> -  o |  changeset:   5:99b31f1c2782
> -  | |  parent:      3:5918b8d165d1
> -  | |  user:        test
> -  | |  date:        Thu Jan 01 00:00:00 1970 +0000
> -  | |  summary:     add another e
> -  | |
> -  | |  diff --git a/e b/e
> -  | |  new file mode 100644
> -  | |  --- /dev/null
> -  | |  +++ b/e
> -  | |  @@ -0,0 +1,1 @@
> -  | |  +ee
> -  | |
> +  | .  parent:      5:99b31f1c2782
> +  | .  parent:      4:17d952250a9d
> +  | .  user:        test
> +  | .  date:        Thu Jan 01 00:00:00 1970 +0000
> +  | .  summary:     merge 5 and 4
> +  | .
> +  | .  diff --git a/e b/e
> +  | .  --- a/e
> +  | .  +++ b/e
> +  | .  @@ -1,1 +1,1 @@
> +  | .  -ee
> +  | .  +merge
> +  | .
> +  o .  changeset:   5:99b31f1c2782
> +  . .  parent:      3:5918b8d165d1
> +  . .  user:        test
> +  . .  date:        Thu Jan 01 00:00:00 1970 +0000
> +  . .  summary:     add another e
> +  . .
> +  . .  diff --git a/e b/e
> +  . .  new file mode 100644
> +  . .  --- /dev/null
> +  . .  +++ b/e
> +  . .  @@ -0,0 +1,1 @@
> +  . .  +ee
> +  . .
>   
>   Test old-style --rev
>   
> @@ -2384,7 +2384,7 @@
>     o  2147483647:ffffffffffff
>     |
>     @  3:5918b8d165d1
> -  |
> +  .
>   
>   node template with changeset_printer:
>   
> @@ -2393,8 +2393,8 @@
>     |
>     6    6:fc281d8ff18d
>     |\
> -  5 |  5:99b31f1c2782
> -  | |
> +  5 .  5:99b31f1c2782
> +  . .
>   
>   node template with changeset_templater (shared cache variable):
>   
> @@ -2404,7 +2404,7 @@
>     |
>     #    6 foo-bar+0
>     |\
> -  o |  5 null+5
> -  | |
> +  o .  5 null+5
> +  . .
>   
>     $ cd ..
> diff --git a/tests/test-histedit-arguments.t b/tests/test-histedit-arguments.t
> --- a/tests/test-histedit-arguments.t
> +++ b/tests/test-histedit-arguments.t
> @@ -123,7 +123,7 @@
>     o  3 c8e6 four
>     |
>     o  2 eb57 three
> -  |
> +  .
>     $ HGEDITOR=cat hg histedit -r 4 --commands - << EOF
>     > edit 08d98a8350f3 4 five
>     > EOF
> @@ -151,7 +151,7 @@
>     | o  3 c8e6 four
>     |/
>     o  2 eb57 three
> -  |
> +  .
>   
>     $ hg unbundle -q $TESTTMP/foo/.hg/strip-backup/08d98a8350f3-02594089-backup.hg
>     $ hg strip -q -r f5ed --config extensions.strip=
> diff --git a/tests/test-largefiles-misc.t b/tests/test-largefiles-misc.t
> --- a/tests/test-largefiles-misc.t
> +++ b/tests/test-largefiles-misc.t
> @@ -472,11 +472,11 @@
>   
>     $ hg log -G anotherlarge
>     @  changeset:   1:9627a577c5e9
> -  |  tag:         tip
> -  |  user:        test
> -  |  date:        Thu Jan 01 00:00:00 1970 +0000
> -  |  summary:     anotherlarge
> -  |
> +  .  tag:         tip
> +  .  user:        test
> +  .  date:        Thu Jan 01 00:00:00 1970 +0000
> +  .  summary:     anotherlarge
> +  .
>   
>     $ hg log glob:another*
>     changeset:   1:9627a577c5e9
> @@ -488,7 +488,7 @@
>     $ hg --debug log -T '{rev}: {desc}\n' -G glob:another*
>     updated patterns: ['glob:../.hglf/sub/another*', 'glob:another*']
>     @  1: anotherlarge
> -  |
> +  .
>   
>   #if no-msys
>     $ hg --debug log -T '{rev}: {desc}\n' 'glob:../.hglf/sub/another*' # no-msys
> @@ -498,7 +498,7 @@
>     $ hg --debug log -G -T '{rev}: {desc}\n' 'glob:../.hglf/sub/another*' # no-msys
>     updated patterns: ['glob:../.hglf/sub/another*']
>     @  1: anotherlarge
> -  |
> +  .
>   #endif
>   
>     $ echo more >> anotherlarge
> @@ -533,11 +533,11 @@
>     
>     $ hg log -G glob:**another*
>     @  changeset:   1:9627a577c5e9
> -  |  tag:         tip
> -  |  user:        test
> -  |  date:        Thu Jan 01 00:00:00 1970 +0000
> -  |  summary:     anotherlarge
> -  |
> +  .  tag:         tip
> +  .  user:        test
> +  .  date:        Thu Jan 01 00:00:00 1970 +0000
> +  .  summary:     anotherlarge
> +  .
>   
>     $ cd ..
>   
> diff --git a/tests/test-largefiles.t b/tests/test-largefiles.t
> --- a/tests/test-largefiles.t
> +++ b/tests/test-largefiles.t
> @@ -930,7 +930,7 @@
>     7:daea875e9014
>     $ hg log -Gqf sub2/large7
>     @  7:daea875e9014
> -  |
> +  .
>     $ cd ..
>   
>   Test log from outside repo
> @@ -1285,13 +1285,13 @@
>     4:74c02385b94c  move files
>     $ hg log -G --template '{rev}:{node|short}  {desc|firstline}\n' .hglf/sub/large4
>     o  8:a381d2c8c80e  modify normal file and largefile in repo b
> -  |
> +  :
>     o  6:4355d653f84f  edit files yet again
>     |
>     o  5:9d5af5072dbd  edit files again
>     |
>     o  4:74c02385b94c  move files
> -  |
> +  .
>     $ hg log --template '{rev}:{node|short}  {desc|firstline}\n' sub/large4
>     8:a381d2c8c80e  modify normal file and largefile in repo b
>     6:4355d653f84f  edit files yet again
> @@ -1299,13 +1299,13 @@
>     4:74c02385b94c  move files
>     $ hg log -G --template '{rev}:{node|short}  {desc|firstline}\n' .hglf/sub/large4
>     o  8:a381d2c8c80e  modify normal file and largefile in repo b
> -  |
> +  :
>     o  6:4355d653f84f  edit files yet again
>     |
>     o  5:9d5af5072dbd  edit files again
>     |
>     o  4:74c02385b94c  move files
> -  |
> +  .
>   
>   - .hglf only matches largefiles, without .hglf it matches 9 bco sub/normal
>     $ hg log --template '{rev}:{node|short}  {desc|firstline}\n' .hglf/sub
> @@ -1317,13 +1317,13 @@
>     0:30d30fe6a5be  add files
>     $ hg log -G --template '{rev}:{node|short}  {desc|firstline}\n' .hglf/sub
>     o  8:a381d2c8c80e  modify normal file and largefile in repo b
> -  |
> +  :
>     o  6:4355d653f84f  edit files yet again
>     |
>     o  5:9d5af5072dbd  edit files again
>     |
>     o  4:74c02385b94c  move files
> -  |
> +  :
>     o  1:ce8896473775  edit files
>     |
>     o  0:30d30fe6a5be  add files
> @@ -1340,13 +1340,13 @@
>     @  9:598410d3eb9a  modify normal file largefile in repo d
>     |
>     o  8:a381d2c8c80e  modify normal file and largefile in repo b
> -  |
> +  :
>     o  6:4355d653f84f  edit files yet again
>     |
>     o  5:9d5af5072dbd  edit files again
>     |
>     o  4:74c02385b94c  move files
> -  |
> +  :
>     o  1:ce8896473775  edit files
>     |
>     o  0:30d30fe6a5be  add files
> @@ -1364,13 +1364,13 @@
>     @  9:598410d3eb9a  modify normal file largefile in repo d
>     |
>     o  8:a381d2c8c80e  modify normal file and largefile in repo b
> -  |
> +  :
>     o  6:4355d653f84f  edit files yet again
>     |
>     o  5:9d5af5072dbd  edit files again
>     |
>     o  4:74c02385b94c  move files
> -  |
> +  :
>     o  1:ce8896473775  edit files
>     |
>     o  0:30d30fe6a5be  add files
> diff --git a/tests/test-log.t b/tests/test-log.t
> --- a/tests/test-log.t
> +++ b/tests/test-log.t
> @@ -1970,10 +1970,10 @@
>     |  summary:     content3
>     |
>     o  changeset:   3:15b2327059e5
> -  |  user:        test
> -  |  date:        Thu Jan 01 00:00:00 1970 +0000
> -  |  summary:     content2
> -  |
> +  :  user:        test
> +  :  date:        Thu Jan 01 00:00:00 1970 +0000
> +  :  summary:     content2
> +  :
>     o  changeset:   0:ae0a3c9f9e95
>        user:        test
>        date:        Thu Jan 01 00:00:00 1970 +0000
> @@ -1985,16 +1985,16 @@
>   
>     $ hg log -G a
>     @  changeset:   4:50b9b36e9c5d
> -  |  tag:         tip
> -  |  user:        test
> -  |  date:        Thu Jan 01 00:00:00 1970 +0000
> -  |  summary:     content3
> -  |
> -  | o  changeset:   1:2294ae80ad84
> -  |/   user:        test
> -  |    date:        Thu Jan 01 00:00:00 1970 +0000
> -  |    summary:     content2
> -  |
> +  :  tag:         tip
> +  :  user:        test
> +  :  date:        Thu Jan 01 00:00:00 1970 +0000
> +  :  summary:     content3
> +  :
> +  : o  changeset:   1:2294ae80ad84
> +  :/   user:        test
> +  :    date:        Thu Jan 01 00:00:00 1970 +0000
> +  :    summary:     content2
> +  :
>     o  changeset:   0:ae0a3c9f9e95
>        user:        test
>        date:        Thu Jan 01 00:00:00 1970 +0000
> @@ -2008,10 +2008,10 @@
>     1 files updated, 0 files merged, 0 files removed, 0 files unresolved
>     $ hg log -Gf a
>     @  changeset:   3:15b2327059e5
> -  |  user:        test
> -  |  date:        Thu Jan 01 00:00:00 1970 +0000
> -  |  summary:     content2
> -  |
> +  :  user:        test
> +  :  date:        Thu Jan 01 00:00:00 1970 +0000
> +  :  summary:     content2
> +  :
>     o  changeset:   0:ae0a3c9f9e95
>        user:        test
>        date:        Thu Jan 01 00:00:00 1970 +0000
> @@ -2059,10 +2059,10 @@
>     |  summary:     content3
>     |
>     @  changeset:   3:15b2327059e5
> -  |  user:        test
> -  |  date:        Thu Jan 01 00:00:00 1970 +0000
> -  |  summary:     content2
> -  |
> +  :  user:        test
> +  :  date:        Thu Jan 01 00:00:00 1970 +0000
> +  :  summary:     content2
> +  :
>     o  changeset:   0:ae0a3c9f9e95
>        user:        test
>        date:        Thu Jan 01 00:00:00 1970 +0000
> @@ -2076,11 +2076,11 @@
>     $ hg debugobsolete 50b9b36e9c5df2c6fc6dcefa8ad0da929e84aed2
>     $ hg log -G a
>     @  changeset:   3:15b2327059e5
> -  |  tag:         tip
> -  |  user:        test
> -  |  date:        Thu Jan 01 00:00:00 1970 +0000
> -  |  summary:     content2
> -  |
> +  :  tag:         tip
> +  :  user:        test
> +  :  date:        Thu Jan 01 00:00:00 1970 +0000
> +  :  summary:     content2
> +  :
>     o  changeset:   0:ae0a3c9f9e95
>        user:        test
>        date:        Thu Jan 01 00:00:00 1970 +0000
> @@ -2132,18 +2132,18 @@
>     
>     $ hg log -f -G b
>     @  changeset:   3:9bc8ce7f9356
> -  |  parent:      0:f7b1eb17ad24
> -  |  user:        test
> -  |  date:        Thu Jan 01 00:00:00 1970 +0000
> -  |  summary:     1
> -  |
> +  .  parent:      0:f7b1eb17ad24
> +  .  user:        test
> +  .  date:        Thu Jan 01 00:00:00 1970 +0000
> +  .  summary:     1
> +  .
>     $ hg log -G b
>     @  changeset:   3:9bc8ce7f9356
> -  |  parent:      0:f7b1eb17ad24
> -  |  user:        test
> -  |  date:        Thu Jan 01 00:00:00 1970 +0000
> -  |  summary:     1
> -  |
> +  .  parent:      0:f7b1eb17ad24
> +  .  user:        test
> +  .  date:        Thu Jan 01 00:00:00 1970 +0000
> +  .  summary:     1
> +  .
>     $ cd ..
>   
>   Check proper report when the manifest changes but not the file issue4499
> diff --git a/tests/test-rebase-pull.t b/tests/test-rebase-pull.t
> --- a/tests/test-rebase-pull.t
> +++ b/tests/test-rebase-pull.t
> @@ -91,7 +91,7 @@
>   
>     $ hg tglog -l 1
>     @  2: 'R1'
> -  |
> +  .
>   
>   pull --rebase --update should ignore --update:
>   
> @@ -111,7 +111,7 @@
>   
>     $ hg tglog -l 1
>     o  2: 'R1'
> -  |
> +  .
>   
>     $ cd ..
>   
> diff --git a/tests/test-rebase-rename.t b/tests/test-rebase-rename.t
> --- a/tests/test-rebase-rename.t
> +++ b/tests/test-rebase-rename.t
> @@ -298,7 +298,7 @@
>     o  3: 'File c created as copy of b and modified'
>     |
>     o  2: 'File b created as copy of a and modified'
> -  |
> +  :
>     o  0: 'File a created'
>     
>   Same steps as above, but with --collapse on rebase to make sure the
> @@ -323,9 +323,9 @@
>   
>     $ hg tglog --follow d
>     @  3: 'Collapsed revision
> -  |  * File b created as copy of a and modified
> -  |  * File c created as copy of b and modified
> -  |  * File d created as copy of c and modified'
> +  :  * File b created as copy of a and modified
> +  :  * File c created as copy of b and modified
> +  :  * File d created as copy of c and modified'
>     o  0: 'File a created'
>     
>   
> diff --git a/tests/test-shelve.t b/tests/test-shelve.t
> --- a/tests/test-shelve.t
> +++ b/tests/test-shelve.t
> @@ -718,7 +718,7 @@
>     0 files updated, 0 files merged, 1 files removed, 0 files unresolved
>     $ hg log -G --template '{rev}  {desc|firstline}  {author}' -R bundle://.hg/shelved/default.hg -r 'bundle()'
>     o  4  changes to: commit stuff  shelve at localhost
> -  |
> +  .
>     $ hg log -G --template '{rev}  {desc|firstline}  {author}'
>     @  3  commit stuff  test
>     |
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://urldefense.proofpoint.com/v2/url?u=https-3A__www.mercurial-2Dscm.org_mailman_listinfo_mercurial-2Ddevel&d=CwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=nuarHzhP1wi1T9iURRCj1A&m=XshBZtmCWRlCBvnJnmHoqLgrA58KJPxyQWIpLecUbtc&s=vhdYJ8eko-xSwUoKv0C9yMKQ3ncGIbmxcopziUK57gI&e=



More information about the Mercurial-devel mailing list