https://bz.mercurial-scm.org/show_bug.cgi?id=6648
Bug ID: 6648 Summary: list index out of range when running `hg evolve` on obsolete commit with no successors Product: Mercurial Version: unspecified Hardware: PC OS: Linux Status: UNCONFIRMED Severity: bug Priority: wish Component: evolution Assignee: bugzi...@mercurial-scm.org Reporter: h...@pewpew.net CC: mercurial-devel@mercurial-scm.org, pierre-yves.da...@ens-lyon.org Python Version: --- If I create a chain of commits (let's call this revisions 0-1-2), split 1, prune 2, and then update to 2 and try to run `hg evolve`, it crashes with `list index out of range` as of change 431bf23d. Reproduction steps: ``` $ hg init $ echo hi > foo && hg commit -qAm 'r0' $ echo -e "hi_r3\nhi_r4" >> foo && hg commit -qm 'r1_splitme' $ echo bar > bar && hg commit -qAm 'r2_obsoleteme' # This is just so that we don't have to use --hidden below. $ hg tag --local -r 2 bar $ hg prune -r 2 $ hg split # Split r1_splitme into two revisions, whatever way you want $ hg update -r 2 --hidden 2 files updated, 0 files merged, 0 files removed, 0 files unresolved working directory parent is obsolete! (82259e31ec1f) (use 'hg evolve' to update to its parent successor) # When using evolve from 46858e6f (aka 431bf23d^) $ hg evolve parent is obsolete with multiple successors: 3 75ce52d1 "hi_r3" 4 749ae671 tip "hi_r4" # When using evolve from 431bf23d hg evolve --config extensions.evolve= ** unknown exception encountered, please report by visiting ** https://mercurial-scm.org/wiki/BugTracker ** Python 3.9.9 (main, Jan 12 2022, 16:10:51) [GCC 11.2.0] ** Mercurial Distributed SCM (version 6.0.2+hg355.02e9ad08999b) ** Extensions loaded: evolve 10.5.0.dev Traceback (most recent call last): File "/usr/lib/python3/dist-packages/hgext3rd/evolve/evolvecmd.py", line 1822, in solveobswdp ctx = repo[utility._singlesuccessor(repo, oldctx)] File "/usr/lib/python3/dist-packages/hgext3rd/evolve/utility.py", line 127, in _singlesuccessor raise MultipleSuccessorsError(newer) hgext3rd.evolve.utility.MultipleSuccessorsError: [[b'u\xceR\xd1\xe8#\xb7M\x16\x96YWZz\xb6\xfc*\xbfQ\xb9', b't\x9a\xe6qM>\xcf\xab\x8b\x07\xabD\xfei\xfd=\x00\x1e\x9f\xb0']] During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/bin/hg", line 61, in <module> dispatch.run() File "/usr/lib/python3/dist-packages/mercurial/dispatch.py", line 144, in run status = dispatch(req) File "/usr/lib/python3/dist-packages/mercurial/dispatch.py", line 250, in dispatch status = _rundispatch(req) File "/usr/lib/python3/dist-packages/mercurial/dispatch.py", line 299, in _rundispatch ret = _runcatch(req) or 0 File "/usr/lib/python3/dist-packages/mercurial/dispatch.py", line 487, in _runcatch return _callcatch(ui, _runcatchfunc) File "/usr/lib/python3/dist-packages/mercurial/dispatch.py", line 497, in _callcatch return scmutil.callcatch(ui, func) File "/usr/lib/python3/dist-packages/mercurial/scmutil.py", line 153, in callcatch return func() File "/usr/lib/python3/dist-packages/mercurial/dispatch.py", line 474, in _runcatchfunc return _dispatch(req) File "/usr/lib/python3/dist-packages/mercurial/dispatch.py", line 1290, in _dispatch return runcommand( File "/usr/lib/python3/dist-packages/mercurial/dispatch.py", line 935, in runcommand ret = _runcommand(ui, options, cmd, d) File "/usr/lib/python3/dist-packages/mercurial/dispatch.py", line 1302, in _runcommand return cmdfunc() File "/usr/lib/python3/dist-packages/mercurial/dispatch.py", line 1288, in <lambda> d = lambda: util.checksignature(func)(ui, *args, **strcmdopt) File "/usr/lib/python3/dist-packages/mercurial/util.py", line 1887, in check return func(*args, **kwargs) File "/usr/lib/python3/dist-packages/hgext3rd/evolve/evolvecmd.py", line 1638, in evolve return _performevolve(ui, repo, **opts) File "/usr/lib/python3/dist-packages/hgext3rd/evolve/evolvecmd.py", line 1726, in _performevolve result = solveobswdp(ui, repo, opts) File "/usr/lib/python3/dist-packages/hgext3rd/evolve/evolvecmd.py", line 1825, in solveobswdp splitsucc = utility.select_split_successor(ui, repo, oldctx) File "/usr/lib/python3/dist-packages/hgext3rd/evolve/utility.py", line 139, in select_split_successor targets = obsutil.successorssets(repo, ctx.node())[0] IndexError: list index out of range ``` -- You are receiving this mail because: You are on the CC list for the bug. _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel