# HG changeset patch # User Laurent Charignon # Date 1435188456 25200 # Node ID 3c0aebe73482de4d3d067bc7e3d41d4c96887be7 # Parent bc4c7b1bb793aa497505d0397d86a1c5857a1ea1 evolve: handle split commit for instability diff -r bc4c7b1bb793 -r 3c0aebe73482 hgext/evolve.py --- a/hgext/evolve.py Fri Aug 07 13:59:19 2015 -0700 +++ b/hgext/evolve.py Wed Jun 24 16:27:36 2015 -0700 @@ -1708,10 +1708,17 @@ targets = newer[0] assert targets if len(targets) > 1: - msg = _("does not handle split parents yet\n") - ui.write_err(msg) - return 2 - target = targets[0] + # split target, figure out which one to pick, are they all in line? + targetrevs = [repo[r].rev() for r in targets] + roots = repo.revs('roots(%ld)', targetrevs) + heads = repo.revs('heads(%ld)', targetrevs) + if len(roots) > 1 or len(heads) > 1: + msg = "cannot solve split accross two branches\n" + ui.write_err(msg) + return 2 + target = repo[heads.first()] + else: + target = targets[0] displayer = cmdutil.show_changeset(ui, repo, {'template': shorttemplate}) target = repo[target] if not ui.quiet or confirm: diff -r bc4c7b1bb793 -r 3c0aebe73482 tests/test-evolve-split.t --- a/tests/test-evolve-split.t Fri Aug 07 13:59:19 2015 -0700 +++ b/tests/test-evolve-split.t Wed Jun 24 16:27:36 2015 -0700 @@ -58,4 +58,6 @@ o 0:58663bb03074@default(draft) add aa $ hg evolve --rev "0::" - does not handle split parents yet + move:[2] add uu + atop:[4] _pp + working directory is now at 6f5bbe2e3df3 diff -r bc4c7b1bb793 -r 3c0aebe73482 tests/test-evolve.t --- a/tests/test-evolve.t Fri Aug 07 13:59:19 2015 -0700 +++ b/tests/test-evolve.t Wed Jun 24 16:27:36 2015 -0700 @@ -1393,6 +1393,8 @@ o 18:0bb66d4c1968@default(draft) a3 | $ hg evolve --rev "18::" - does not handle split parents yet + move:[33] add uu + atop:[35] _pp + working directory is now at 04fae07745d4 diff -r bc4c7b1bb793 -r 3c0aebe73482 tests/test-unstable.t --- a/tests/test-unstable.t Fri Aug 07 13:59:19 2015 -0700 +++ b/tests/test-unstable.t Wed Jun 24 16:27:36 2015 -0700 @@ -182,7 +182,6 @@ =============================================================================== Test instability resolution for a changeset unstable because its parent is obsolete with multiple successors all in one chain (simple split) -Not supported yet ============================================================================== $ hg init test4 @@ -208,16 +207,16 @@ $ hg evo --all --any --unstable - does not handle split parents yet + move:[2] add _c + atop:[4] add bprimesplit2 + working directory is now at 387cc1e837d7 $ hg log -G - @ 4:2a4ccc0bb20c@default(draft) add bprimesplit2 + @ 5:387cc1e837d7@default(draft) add _c + | + o 4:2a4ccc0bb20c@default(draft) add bprimesplit2 | o 3:8b87864bd0f4@default(draft) add bprimesplit1 | - | o 2:102002290587@default(draft) add _c - | | - | x 1:37445b16603b@default(draft) add _b - |/ o 0:135f39f4bd78@default(draft) add _a @@ -228,7 +227,6 @@ Test instability resolution for a changeset unstable because its parent is obsolete with multiple successors on one branches but in reverse order (cross-split). -Not supported yet ============================================================================== $ hg init test5 @@ -263,16 +261,16 @@ $ hg evo --all --any --unstable - does not handle split parents yet + move:[2] add _c + atop:[6] add bsecondsplit2 + working directory is now at 98e3f21461ff $ hg log -G - @ 6:59b942dbda14@default(draft) add bsecondsplit2 + @ 7:98e3f21461ff@default(draft) add _c + | + o 6:59b942dbda14@default(draft) add bsecondsplit2 | o 5:8ffdae67d696@default(draft) add bsecondsplit1 | - | o 2:102002290587@default(draft) add _c - | | - | x 1:37445b16603b@default(draft) add _b - |/ o 0:135f39f4bd78@default(draft) add _a @@ -312,7 +310,7 @@ $ hg evo --all --any --unstable - does not handle split parents yet + cannot solve split accross two branches $ hg log -G @ 4:3c69ea6aa93e@default(draft) add bprimesplit2 |