Submitter | Boris Feld |
---|---|
Date | July 5, 2017, 8:53 p.m. |
Message ID | <82e2b4eb96b573dde890.1499288038@FB> |
Download | mbox | patch |
Permalink | /patch/22019/ |
State | Accepted |
Headers | show |
Comments
On Wed, Jul 05, 2017 at 10:53:58PM +0200, Boris Feld wrote: > # HG changeset patch > # User Boris Feld <boris.feld@octobus.net> > # Date 1499073720 -7200 > # Mon Jul 03 11:22:00 2017 +0200 > # Node ID 82e2b4eb96b573dde890d725d758dbbc49407133 > # Parent 870bfaafd90e030b85b869922050be98f000a9a9 > # EXP-Topic successorstemplate > template: add successors template queued, thanks > > Add a 'successorssets' template that returns the list of all closest known > sucessorssets for a changectx. The elements of the list are changesets. I'm not...super in love with the name successorssets, but I have no better ideas. I'd welcome some bikeshedding in the next ten days.
On Wed, 05 Jul 2017 22:53:58 +0200, Boris Feld wrote: > # HG changeset patch > # User Boris Feld <boris.feld@octobus.net> > # Date 1499073720 -7200 > # Mon Jul 03 11:22:00 2017 +0200 > # Node ID 82e2b4eb96b573dde890d725d758dbbc49407133 > # Parent 870bfaafd90e030b85b869922050be98f000a9a9 > # EXP-Topic successorstemplate > template: add successors template > +@templatekeyword("successorssets") > +def showsuccessorssets(repo, ctx, **args): > + """Returns a string of sets of successors for a changectx > + > + Format used is: [ctx1, ctx2], [ctx3] if ctx has been splitted into ctx1 and > + ctx2 while also diverged into ctx3""" > + if not ctx.obsolete(): > + return '' Perhaps it should return an empty list.
Augie Fackler <raf@durin42.com> writes: > On Wed, Jul 05, 2017 at 10:53:58PM +0200, Boris Feld wrote: >> # HG changeset patch >> # User Boris Feld <boris.feld@octobus.net> >> # Date 1499073720 -7200 >> # Mon Jul 03 11:22:00 2017 +0200 >> # Node ID 82e2b4eb96b573dde890d725d758dbbc49407133 >> # Parent 870bfaafd90e030b85b869922050be98f000a9a9 >> # EXP-Topic successorstemplate >> template: add successors template > > queued, thanks > >> >> Add a 'successorssets' template that returns the list of all closest known >> sucessorssets for a changectx. The elements of the list are changesets. > > I'm not...super in love with the name successorssets, but I have no > better ideas. I'd welcome some bikeshedding in the next ten days. Off the top of my head: successorgroup successorlike similarsuccessors successorkin
On Thu, 06 Jul 2017 11:05:22 -0700, Sean Farley wrote: > Augie Fackler <raf@durin42.com> writes: > > On Wed, Jul 05, 2017 at 10:53:58PM +0200, Boris Feld wrote: > >> # HG changeset patch > >> # User Boris Feld <boris.feld@octobus.net> > >> # Date 1499073720 -7200 > >> # Mon Jul 03 11:22:00 2017 +0200 > >> # Node ID 82e2b4eb96b573dde890d725d758dbbc49407133 > >> # Parent 870bfaafd90e030b85b869922050be98f000a9a9 > >> # EXP-Topic successorstemplate > >> template: add successors template > > > > queued, thanks > > > >> > >> Add a 'successorssets' template that returns the list of all closest known > >> sucessorssets for a changectx. The elements of the list are changesets. > > > > I'm not...super in love with the name successorssets, but I have no > > better ideas. I'd welcome some bikeshedding in the next ten days. > > Off the top of my head: > > successorgroup > successorlike > similarsuccessors > successorkin No idea which is better, but a name like "similarsuccessors" might be nice to justify calling the inner list as "successors". {similarsuccessors % "{successors % ...}"} ^^^^^^^^^^ sounds okay, and its actually a partial list of successors {successorgroup % "{group % ...}"} ^^^^^ calling it "successors" seems a bit odd because "group" is noun
Yuya Nishihara <yuya@tcha.org> writes: > On Thu, 06 Jul 2017 11:05:22 -0700, Sean Farley wrote: >> Augie Fackler <raf@durin42.com> writes: >> > On Wed, Jul 05, 2017 at 10:53:58PM +0200, Boris Feld wrote: >> >> # HG changeset patch >> >> # User Boris Feld <boris.feld@octobus.net> >> >> # Date 1499073720 -7200 >> >> # Mon Jul 03 11:22:00 2017 +0200 >> >> # Node ID 82e2b4eb96b573dde890d725d758dbbc49407133 >> >> # Parent 870bfaafd90e030b85b869922050be98f000a9a9 >> >> # EXP-Topic successorstemplate >> >> template: add successors template >> > >> > queued, thanks >> > >> >> >> >> Add a 'successorssets' template that returns the list of all closest known >> >> sucessorssets for a changectx. The elements of the list are changesets. >> > >> > I'm not...super in love with the name successorssets, but I have no >> > better ideas. I'd welcome some bikeshedding in the next ten days. >> >> Off the top of my head: >> >> successorgroup >> successorlike >> similarsuccessors >> successorkin > > No idea which is better, but a name like "similarsuccessors" might be nice > to justify calling the inner list as "successors". > > {similarsuccessors % "{successors % ...}"} > ^^^^^^^^^^ > sounds okay, and its actually a partial list of successors > > {successorgroup % "{group % ...}"} > ^^^^^ > calling it "successors" seems a bit odd because "group" is noun I like similarsuccessors, fwiw. Also, "successors" is a noun as well.
Excerpts from Sean Farley's message of 2017-07-06 11:05:22 -0700: > Augie Fackler <raf@durin42.com> writes: > > On Wed, Jul 05, 2017 at 10:53:58PM +0200, Boris Feld wrote: > > I'm not...super in love with the name successorssets, but I have no > > better ideas. I'd welcome some bikeshedding in the next ten days. > > Off the top of my head: > > successorgroup > successorlike > similarsuccessors > successorkin "group" looks better to me than "similar". "similar" sounds like there is some filtering logic that removes non-similar ones. "successorsset" looks okay to me, since "set" and "group" are not that much different.
On Fri, Jul 7, 2017 at 10:29 AM, Jun Wu <quark@fb.com> wrote: > Excerpts from Sean Farley's message of 2017-07-06 11:05:22 -0700: >> Augie Fackler <raf@durin42.com> writes: >> > On Wed, Jul 05, 2017 at 10:53:58PM +0200, Boris Feld wrote: >> > I'm not...super in love with the name successorssets, but I have no >> > better ideas. I'd welcome some bikeshedding in the next ten days. >> >> Off the top of my head: >> >> successorgroup >> successorlike >> similarsuccessors >> successorkin > > "group" looks better to me than "similar". "similar" sounds like there is > some filtering logic that removes non-similar ones. > > "successorsset" looks okay to me, since "set" and "group" are not that much > different. Boris described it as "closest successors", so maybe "closestsuccessors"? > _______________________________________________ > Mercurial-devel mailing list > Mercurial-devel@mercurial-scm.org > https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
Excerpts from Martin von Zweigbergk's message of 2017-07-07 10:39:55 -0700:
> Boris described it as "closest successors", so maybe "closestsuccessors"?
Maybe a bit off-topic, but I have been thinking about "predecessors" and
"successors" revsets for a while. It sounds like we could have many
combinations so I was thinking about keyword arguments, like:
successors(REV, all=False, closest=False)
For example, with two markers: A -> (B, C), B -> (D),
successors(A) = [C, D]
successors(A, all=True) = [B, C, D]
successors(A, closest=True) = [C] (without --hidden)
[B, C] (with --hidden)
Also check my comment on Yuya's revset change [1].
I wonder if we can just implement the revsets, and because there is a
"revset" template function, template gets those features for free.
[1]: https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-July/101140.html
On Fri, 2017-07-07 at 10:29 -0700, Jun Wu wrote: > Excerpts from Sean Farley's message of 2017-07-06 11:05:22 -0700: > > Augie Fackler <raf@durin42.com> writes: > > > On Wed, Jul 05, 2017 at 10:53:58PM +0200, Boris Feld wrote: > > > I'm not...super in love with the name successorssets, but I have > > > no > > > better ideas. I'd welcome some bikeshedding in the next ten days. > > > > Off the top of my head: > > > > successorgroup > > successorlike > > similarsuccessors > > successorkin > > "group" looks better to me than "similar". "similar" sounds like > there is > some filtering logic that removes non-similar ones. I agree with Jun that similar might send indicates that the successors are selected or processed in a specific way. > > "successorsset" looks okay to me, since "set" and "group" are not > that much > different. Successorgroup sound good to me, it is less implementation specific and might be easier to understand for users. > _______________________________________________ > Mercurial-devel mailing list > Mercurial-devel@mercurial-scm.org > https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
> On Jul 7, 2017, at 2:50 PM, Boris Feld <boris.feld@octobus.net> wrote: > >> "successorsset" looks okay to me, since "set" and "group" are not >> that much >> different. > > Successorgroup sound good to me, it is less implementation specific and > might be easier to understand for users. I think successorgroup is a bit better as well. Can someone mail a followup?
On Fri, 2017-07-07 at 14:52 -0400, Augie Fackler wrote: > I think successorgroup is a bit better as well. Can someone mail a > followup? I will do
On Fri, 07 Jul 2017 09:35:48 -0700, Sean Farley wrote: > Yuya Nishihara <yuya@tcha.org> writes: > > On Thu, 06 Jul 2017 11:05:22 -0700, Sean Farley wrote: > >> Augie Fackler <raf@durin42.com> writes: > >> > On Wed, Jul 05, 2017 at 10:53:58PM +0200, Boris Feld wrote: > >> >> # HG changeset patch > >> >> # User Boris Feld <boris.feld@octobus.net> > >> >> # Date 1499073720 -7200 > >> >> # Mon Jul 03 11:22:00 2017 +0200 > >> >> # Node ID 82e2b4eb96b573dde890d725d758dbbc49407133 > >> >> # Parent 870bfaafd90e030b85b869922050be98f000a9a9 > >> >> # EXP-Topic successorstemplate > >> >> template: add successors template > >> > > >> > queued, thanks > >> > > >> >> > >> >> Add a 'successorssets' template that returns the list of all closest known > >> >> sucessorssets for a changectx. The elements of the list are changesets. > >> > > >> > I'm not...super in love with the name successorssets, but I have no > >> > better ideas. I'd welcome some bikeshedding in the next ten days. > >> > >> Off the top of my head: > >> > >> successorgroup > >> successorlike > >> similarsuccessors > >> successorkin > > > > No idea which is better, but a name like "similarsuccessors" might be nice > > to justify calling the inner list as "successors". > > > > {similarsuccessors % "{successors % ...}"} > > ^^^^^^^^^^ > > sounds okay, and its actually a partial list of successors > > > > {successorgroup % "{group % ...}"} > > ^^^^^ > > calling it "successors" seems a bit odd because "group" is noun > > I like similarsuccessors, fwiw. Also, "successors" is a noun as well. I meant "successor" in "successorgroup" is adjective, so can't be a name pointing to each element.
Yuya Nishihara <yuya@tcha.org> writes: > On Fri, 07 Jul 2017 09:35:48 -0700, Sean Farley wrote: >> Yuya Nishihara <yuya@tcha.org> writes: >> > On Thu, 06 Jul 2017 11:05:22 -0700, Sean Farley wrote: >> >> Augie Fackler <raf@durin42.com> writes: >> >> > On Wed, Jul 05, 2017 at 10:53:58PM +0200, Boris Feld wrote: >> >> >> # HG changeset patch >> >> >> # User Boris Feld <boris.feld@octobus.net> >> >> >> # Date 1499073720 -7200 >> >> >> # Mon Jul 03 11:22:00 2017 +0200 >> >> >> # Node ID 82e2b4eb96b573dde890d725d758dbbc49407133 >> >> >> # Parent 870bfaafd90e030b85b869922050be98f000a9a9 >> >> >> # EXP-Topic successorstemplate >> >> >> template: add successors template >> >> > >> >> > queued, thanks >> >> > >> >> >> >> >> >> Add a 'successorssets' template that returns the list of all closest known >> >> >> sucessorssets for a changectx. The elements of the list are changesets. >> >> > >> >> > I'm not...super in love with the name successorssets, but I have no >> >> > better ideas. I'd welcome some bikeshedding in the next ten days. >> >> >> >> Off the top of my head: >> >> >> >> successorgroup >> >> successorlike >> >> similarsuccessors >> >> successorkin >> > >> > No idea which is better, but a name like "similarsuccessors" might be nice >> > to justify calling the inner list as "successors". >> > >> > {similarsuccessors % "{successors % ...}"} >> > ^^^^^^^^^^ >> > sounds okay, and its actually a partial list of successors >> > >> > {successorgroup % "{group % ...}"} >> > ^^^^^ >> > calling it "successors" seems a bit odd because "group" is noun >> >> I like similarsuccessors, fwiw. Also, "successors" is a noun as well. > > I meant "successor" in "successorgroup" is adjective, so can't be a name > pointing to each element. (this is stuck my outgoing queue; sorry) Ah! I see what you mean now; sorry that I misunderstood. Seems later discussions take care of this so archiving this thread now.
Patch
diff -r 870bfaafd90e -r 82e2b4eb96b5 mercurial/templatekw.py --- a/mercurial/templatekw.py Mon Jul 03 14:22:28 2017 +0200 +++ b/mercurial/templatekw.py Mon Jul 03 11:22:00 2017 +0200 @@ -602,6 +602,38 @@ lambda x: {'ctx': repo[x], 'revcache': {}}, lambda d: _formatrevnode(d['ctx'])) +@templatekeyword("successorssets") +def showsuccessorssets(repo, ctx, **args): + """Returns a string of sets of successors for a changectx + + Format used is: [ctx1, ctx2], [ctx3] if ctx has been splitted into ctx1 and + ctx2 while also diverged into ctx3""" + if not ctx.obsolete(): + return '' + args = pycompat.byteskwargs(args) + + ssets = obsutil.successorssets(repo, ctx.node(), closest=True) + ssets = [[hex(n) for n in ss] for ss in ssets] + + data = [] + for ss in ssets: + h = _hybrid(None, ss, lambda x: {'ctx': repo[x], 'revcache': {}}, + lambda d: _formatrevnode(d['ctx'])) + data.append(h) + + # Format the successorssets + def render(d): + t = [] + for i in d.gen: + t.append(i) + return "".join(t) + + def gen(data): + yield "; ".join(render(d) for d in data) + + return _hybrid(gen(data), data, lambda x: {'successorset': x}, + lambda d: d["successorset"]) + @templatekeyword('p1rev') def showp1rev(repo, ctx, templ, **args): """Integer. The repository-local revision number of the changeset's diff -r 870bfaafd90e -r 82e2b4eb96b5 tests/test-obsmarker-template.t --- a/tests/test-obsmarker-template.t Mon Jul 03 14:22:28 2017 +0200 +++ b/tests/test-obsmarker-template.t Mon Jul 03 11:22:00 2017 +0200 @@ -16,7 +16,10 @@ > {if(predecessors, "\n Predecessors: {predecessors}")}\ > {if(predecessors, "\n semi-colon: {join(predecessors, "; ")}")}\ > {if(predecessors, "\n json: {predecessors|json}")}\ - > {if(predecessors, "\n map: {join(predecessors % "{rev}:{node}", " ")}")}\n' + > {if(predecessors, "\n map: {join(predecessors % "{rev}:{node}", " ")}")}\ + > {if(successorssets, "\n Successors: {successorssets}")}\ + > {if(successorssets, "\n multi-line: {join(successorssets, "\n multi-line: ")}")}\ + > {if(successorssets, "\n json: {successorssets|json}")}\n' > EOF Test templates on amended commit @@ -75,7 +78,9 @@ | json: ["471f378eab4c5e25f6c77f785b27c936efb22874"] | map: 1:471f378eab4c5e25f6c77f785b27c936efb22874 | @ 471f378eab4c - |/ + |/ Successors: 4:d004c8f274b9 + | multi-line: 4:d004c8f274b9 + | json: [["d004c8f274b9ec480a47a93c10dac5eee63adb78"]] o ea207398892e $ hg up 'desc(A1)' --hidden @@ -89,7 +94,9 @@ | json: ["a468dc9b36338b14fdb7825f55ce3df4e71517ad"] | map: 3:a468dc9b36338b14fdb7825f55ce3df4e71517ad | @ a468dc9b3633 - |/ + |/ Successors: 4:d004c8f274b9 + | multi-line: 4:d004c8f274b9 + | json: [["d004c8f274b9ec480a47a93c10dac5eee63adb78"]] o ea207398892e Predecessors template should show all the predecessors as we force their display @@ -105,10 +112,15 @@ | semi-colon: 1:471f378eab4c | json: ["471f378eab4c5e25f6c77f785b27c936efb22874"] | map: 1:471f378eab4c5e25f6c77f785b27c936efb22874 + | Successors: 4:d004c8f274b9 + | multi-line: 4:d004c8f274b9 + | json: [["d004c8f274b9ec480a47a93c10dac5eee63adb78"]] | x f137d23bb3e1 | | | x 471f378eab4c - |/ + |/ Successors: 3:a468dc9b3633 + | multi-line: 3:a468dc9b3633 + | json: [["a468dc9b36338b14fdb7825f55ce3df4e71517ad"]] o ea207398892e @@ -132,10 +144,15 @@ | semi-colon: 1:471f378eab4c | json: ["471f378eab4c5e25f6c77f785b27c936efb22874"] | map: 1:471f378eab4c5e25f6c77f785b27c936efb22874 + | Successors: 4:d004c8f274b9 + | multi-line: 4:d004c8f274b9 + | json: [["d004c8f274b9ec480a47a93c10dac5eee63adb78"]] | x f137d23bb3e1 | | | x 471f378eab4c - |/ + |/ Successors: 3:a468dc9b3633 + | multi-line: 3:a468dc9b3633 + | json: [["a468dc9b36338b14fdb7825f55ce3df4e71517ad"]] o ea207398892e @@ -216,7 +233,9 @@ | json: ["471597cad322d1f659bb169751be9133dad92ef3"] | map: 1:471597cad322d1f659bb169751be9133dad92ef3 | @ 471597cad322 - |/ + |/ Successors: 2:337fec4d2edc 3:f257fde29c7a + | multi-line: 2:337fec4d2edc 3:f257fde29c7a + | json: [["337fec4d2edcf0e7a467e35f818234bc620068b5", "f257fde29c7a847c9b607f6e958656d0df0fb15c"]] o ea207398892e $ hg up f257fde29c7a @@ -245,7 +264,9 @@ | json: ["471597cad322d1f659bb169751be9133dad92ef3"] | map: 1:471597cad322d1f659bb169751be9133dad92ef3 | x 471597cad322 - |/ + |/ Successors: 2:337fec4d2edc 3:f257fde29c7a + | multi-line: 2:337fec4d2edc 3:f257fde29c7a + | json: [["337fec4d2edcf0e7a467e35f818234bc620068b5", "f257fde29c7a847c9b607f6e958656d0df0fb15c"]] o ea207398892e Test templates with folded commit @@ -325,7 +346,9 @@ | json: ["471f378eab4c5e25f6c77f785b27c936efb22874"] | map: 1:471f378eab4c5e25f6c77f785b27c936efb22874 | @ 471f378eab4c - |/ + |/ Successors: 3:eb5a0daa2192 + | multi-line: 3:eb5a0daa2192 + | json: [["eb5a0daa21923bbf8caeb2c42085b9e463861fd0"]] o ea207398892e $ hg up 'desc(B0)' --hidden @@ -340,9 +363,13 @@ | json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5", "471f378eab4c5e25f6c77f785b27c936efb22874"] | map: 2:0dec01379d3be6318c470ead31b1fe7ae7cb53d5 1:471f378eab4c5e25f6c77f785b27c936efb22874 | @ 0dec01379d3b - | | + | | Successors: 3:eb5a0daa2192 + | | multi-line: 3:eb5a0daa2192 + | | json: [["eb5a0daa21923bbf8caeb2c42085b9e463861fd0"]] | x 471f378eab4c - |/ + |/ Successors: 3:eb5a0daa2192 + | multi-line: 3:eb5a0daa2192 + | json: [["eb5a0daa21923bbf8caeb2c42085b9e463861fd0"]] o ea207398892e $ hg up 'desc(C0)' @@ -364,9 +391,13 @@ | json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5", "471f378eab4c5e25f6c77f785b27c936efb22874"] | map: 2:0dec01379d3be6318c470ead31b1fe7ae7cb53d5 1:471f378eab4c5e25f6c77f785b27c936efb22874 | x 0dec01379d3b - | | + | | Successors: 3:eb5a0daa2192 + | | multi-line: 3:eb5a0daa2192 + | | json: [["eb5a0daa21923bbf8caeb2c42085b9e463861fd0"]] | x 471f378eab4c - |/ + |/ Successors: 3:eb5a0daa2192 + | multi-line: 3:eb5a0daa2192 + | json: [["eb5a0daa21923bbf8caeb2c42085b9e463861fd0"]] o ea207398892e @@ -481,7 +512,10 @@ | json: ["471f378eab4c5e25f6c77f785b27c936efb22874"] | map: 1:471f378eab4c5e25f6c77f785b27c936efb22874 | @ 471f378eab4c - |/ + |/ Successors: 2:fdf9bde5129a; 4:019fadeab383 + | multi-line: 2:fdf9bde5129a + | multi-line: 4:019fadeab383 + | json: [["fdf9bde5129a28d4548fadd3f62b265cdd3b7a2e"], ["019fadeab383f6699fa83ad7bdb4d82ed2c0e5ab"]] o ea207398892e $ hg up 'desc(A1)' @@ -509,13 +543,19 @@ | semi-colon: 1:471f378eab4c | json: ["471f378eab4c5e25f6c77f785b27c936efb22874"] | map: 1:471f378eab4c5e25f6c77f785b27c936efb22874 + | Successors: 4:019fadeab383 + | multi-line: 4:019fadeab383 + | json: [["019fadeab383f6699fa83ad7bdb4d82ed2c0e5ab"]] | @ fdf9bde5129a |/ Predecessors: 1:471f378eab4c | semi-colon: 1:471f378eab4c | json: ["471f378eab4c5e25f6c77f785b27c936efb22874"] | map: 1:471f378eab4c5e25f6c77f785b27c936efb22874 | x 471f378eab4c - |/ + |/ Successors: 2:fdf9bde5129a; 3:65b757b745b9 + | multi-line: 2:fdf9bde5129a + | multi-line: 3:65b757b745b9 + | json: [["fdf9bde5129a28d4548fadd3f62b265cdd3b7a2e"], ["65b757b745b935093c87a2bccd877521cccffcbd"]] o ea207398892e @@ -609,7 +649,9 @@ | json: ["471f378eab4c5e25f6c77f785b27c936efb22874"] | map: 1:471f378eab4c5e25f6c77f785b27c936efb22874 | @ 471f378eab4c - |/ + |/ Successors: 4:eb5a0daa2192 + | multi-line: 4:eb5a0daa2192 + | json: [["eb5a0daa21923bbf8caeb2c42085b9e463861fd0"]] o ea207398892e $ hg up 'desc(B0)' --hidden @@ -623,9 +665,13 @@ | json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5", "471f378eab4c5e25f6c77f785b27c936efb22874"] | map: 2:0dec01379d3be6318c470ead31b1fe7ae7cb53d5 1:471f378eab4c5e25f6c77f785b27c936efb22874 | @ 0dec01379d3b - | | + | | Successors: 4:eb5a0daa2192 + | | multi-line: 4:eb5a0daa2192 + | | json: [["eb5a0daa21923bbf8caeb2c42085b9e463861fd0"]] | x 471f378eab4c - |/ + |/ Successors: 4:eb5a0daa2192 + | multi-line: 4:eb5a0daa2192 + | json: [["eb5a0daa21923bbf8caeb2c42085b9e463861fd0"]] o ea207398892e $ hg up 'desc(B1)' --hidden @@ -639,9 +685,13 @@ | json: ["471f378eab4c5e25f6c77f785b27c936efb22874", "b7ea6d14e664bdc8922221f7992631b50da3fb07"] | map: 1:471f378eab4c5e25f6c77f785b27c936efb22874 3:b7ea6d14e664bdc8922221f7992631b50da3fb07 | @ b7ea6d14e664 - | | + | | Successors: 4:eb5a0daa2192 + | | multi-line: 4:eb5a0daa2192 + | | json: [["eb5a0daa21923bbf8caeb2c42085b9e463861fd0"]] | x 471f378eab4c - |/ + |/ Successors: 4:eb5a0daa2192 + | multi-line: 4:eb5a0daa2192 + | json: [["eb5a0daa21923bbf8caeb2c42085b9e463861fd0"]] o ea207398892e $ hg up 'desc(C0)' @@ -666,10 +716,17 @@ | | semi-colon: 2:0dec01379d3b | | json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"] | | map: 2:0dec01379d3be6318c470ead31b1fe7ae7cb53d5 + | | Successors: 4:eb5a0daa2192 + | | multi-line: 4:eb5a0daa2192 + | | json: [["eb5a0daa21923bbf8caeb2c42085b9e463861fd0"]] | | x 0dec01379d3b - | |/ + | |/ Successors: 3:b7ea6d14e664 + | | multi-line: 3:b7ea6d14e664 + | | json: [["b7ea6d14e664bdc8922221f7992631b50da3fb07"]] | x 471f378eab4c - |/ + |/ Successors: 4:eb5a0daa2192 + | multi-line: 4:eb5a0daa2192 + | json: [["eb5a0daa21923bbf8caeb2c42085b9e463861fd0"]] o ea207398892e @@ -770,7 +827,9 @@ | json: ["471f378eab4c5e25f6c77f785b27c936efb22874"] | map: 1:471f378eab4c5e25f6c77f785b27c936efb22874 | @ 471f378eab4c - |/ + |/ Successors: 2:7a230b46bf61 + | multi-line: 2:7a230b46bf61 + | json: [["7a230b46bf61e50b30308c6cfd7bd1269ef54702"]] o ea207398892e $ hg up 'desc(A2)' @@ -791,7 +850,9 @@ | json: ["471f378eab4c5e25f6c77f785b27c936efb22874"] | map: 1:471f378eab4c5e25f6c77f785b27c936efb22874 | x 471f378eab4c - |/ + |/ Successors: 2:7a230b46bf61 + | multi-line: 2:7a230b46bf61 + | json: [["7a230b46bf61e50b30308c6cfd7bd1269ef54702"]] o ea207398892e @@ -839,11 +900,18 @@ | | semi-colon: 1:471f378eab4c | | json: ["471f378eab4c5e25f6c77f785b27c936efb22874"] | | map: 1:471f378eab4c5e25f6c77f785b27c936efb22874 + | | Successors: 3:f897c6137566; 1:471f378eab4c + | | multi-line: 3:f897c6137566 + | | multi-line: 1:471f378eab4c + | | json: [["f897c6137566320b081514b4c7227ecc3d384b39"], ["471f378eab4c5e25f6c77f785b27c936efb22874"]] | x 471f378eab4c |/ Predecessors: 2:0dec01379d3b | semi-colon: 2:0dec01379d3b | json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"] | map: 2:0dec01379d3be6318c470ead31b1fe7ae7cb53d5 + | Successors: 2:0dec01379d3b + | multi-line: 2:0dec01379d3b + | json: [["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"]] o ea207398892e @@ -879,11 +947,18 @@ | | semi-colon: 1:471f378eab4c | | json: ["471f378eab4c5e25f6c77f785b27c936efb22874"] | | map: 1:471f378eab4c5e25f6c77f785b27c936efb22874 + | | Successors: 3:f897c6137566; 1:471f378eab4c + | | multi-line: 3:f897c6137566 + | | multi-line: 1:471f378eab4c + | | json: [["f897c6137566320b081514b4c7227ecc3d384b39"], ["471f378eab4c5e25f6c77f785b27c936efb22874"]] | x 471f378eab4c |/ Predecessors: 2:0dec01379d3b | semi-colon: 2:0dec01379d3b | json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"] | map: 2:0dec01379d3be6318c470ead31b1fe7ae7cb53d5 + | Successors: 2:0dec01379d3b + | multi-line: 2:0dec01379d3b + | json: [["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"]] @ ea207398892e Test template with split + divergence with cycles @@ -1059,7 +1134,10 @@ | o ba2ed02b0c9a | | | x 4a004186e638 - |/ + |/ Successors: 8:b18bc8331526; 9:0b997eb7ceee + | multi-line: 8:b18bc8331526 + | multi-line: 9:0b997eb7ceee + | json: [["b18bc8331526a22cbb1801022bd1555bf291c48b"], ["0b997eb7ceeee06200a02f8aab185979092d514e"]] o dd800401bd8c | o f897c6137566 @@ -1087,13 +1165,19 @@ | semi-colon: 4:9bd10a0775e4 | json: ["9bd10a0775e478708cada5f176ec6de654359ce7"] | map: 4:9bd10a0775e478708cada5f176ec6de654359ce7 + | Successors: 8:b18bc8331526; 9:0b997eb7ceee + | multi-line: 8:b18bc8331526 + | multi-line: 9:0b997eb7ceee + | json: [["b18bc8331526a22cbb1801022bd1555bf291c48b"], ["0b997eb7ceeee06200a02f8aab185979092d514e"]] o dd800401bd8c | Predecessors: 4:9bd10a0775e4 | semi-colon: 4:9bd10a0775e4 | json: ["9bd10a0775e478708cada5f176ec6de654359ce7"] | map: 4:9bd10a0775e478708cada5f176ec6de654359ce7 | x 9bd10a0775e4 - |/ + |/ Successors: 5:dd800401bd8c 6:4a004186e638 7:ba2ed02b0c9a + | multi-line: 5:dd800401bd8c 6:4a004186e638 7:ba2ed02b0c9a + | json: [["dd800401bd8c79d815329277739e433e883f784e", "4a004186e63889f20cb16434fcbd72220bd1eace", "ba2ed02b0c9a56b9fdbc4e79c7e57866984d8a1f"]] o f897c6137566 | Predecessors: 2:0dec01379d3b | semi-colon: 2:0dec01379d3b @@ -1104,11 +1188,18 @@ | | semi-colon: 1:471f378eab4c | | json: ["471f378eab4c5e25f6c77f785b27c936efb22874"] | | map: 1:471f378eab4c5e25f6c77f785b27c936efb22874 + | | Successors: 3:f897c6137566; 1:471f378eab4c + | | multi-line: 3:f897c6137566 + | | multi-line: 1:471f378eab4c + | | json: [["f897c6137566320b081514b4c7227ecc3d384b39"], ["471f378eab4c5e25f6c77f785b27c936efb22874"]] | x 471f378eab4c |/ Predecessors: 2:0dec01379d3b | semi-colon: 2:0dec01379d3b | json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"] | map: 2:0dec01379d3be6318c470ead31b1fe7ae7cb53d5 + | Successors: 2:0dec01379d3b + | multi-line: 2:0dec01379d3b + | json: [["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"]] o ea207398892e $ hg up --hidden 4 @@ -1137,7 +1228,10 @@ | json: ["9bd10a0775e478708cada5f176ec6de654359ce7"] | map: 4:9bd10a0775e478708cada5f176ec6de654359ce7 | @ 9bd10a0775e4 - |/ + |/ Successors: 5:dd800401bd8c 9:0b997eb7ceee 10:eceed8f98ffc; 5:dd800401bd8c 8:b18bc8331526 10:eceed8f98ffc + | multi-line: 5:dd800401bd8c 9:0b997eb7ceee 10:eceed8f98ffc + | multi-line: 5:dd800401bd8c 8:b18bc8331526 10:eceed8f98ffc + | json: [["dd800401bd8c79d815329277739e433e883f784e", "0b997eb7ceeee06200a02f8aab185979092d514e", "eceed8f98ffc4186032e29a6542ab98888ebf68d"], ["dd800401bd8c79d815329277739e433e883f784e", "b18bc8331526a22cbb1801022bd1555bf291c48b", "eceed8f98ffc4186032e29a6542ab98888ebf68d"]] o f897c6137566 | o ea207398892e