-
Bug
-
Resolution: Fixed
-
Medium
-
2.8.0, 2.9.0
-
None
Because of API changes in Mercurial 2.3 (http://www.selenic.com/repo/hg/annotate/4b73f4ba27ca/mercurial/context.py#l637) in some cases Mercurial indexing with FishEye can crash when resolving merges with deletes in the merge itself (sample repo attached)
Stacktrace is:
** Unknown exception encountered with possibly-broken third-party extension onsub ** which supports versions unknown of Mercurial. ** Please disable onsub and try your action again. ** If that fixes the bug please report it to the extension author. ** Python 2.7.3 (default, Sep 26 2012, 21:51:14) [GCC 4.7.2] ** Mercurial Distributed SCM (version 2.3) ** Extensions loaded: pager, graphlog, color, extdiff, purge, transplant, rebase, mq, onsub, felog Traceback (most recent call last): File "/home/lukpater/bin/hg/mercurial-2.3/hg", line 38, in <module> mercurial.dispatch.run() File "/home/lukpater/bin/hg/mercurial-2.3/mercurial/dispatch.py", line 28, in run sys.exit((dispatch(request(sys.argv[1:])) or 0) & 255) File "/home/lukpater/bin/hg/mercurial-2.3/mercurial/dispatch.py", line 65, in dispatch return _runcatch(req) File "/home/lukpater/bin/hg/mercurial-2.3/mercurial/dispatch.py", line 88, in _runcatch return _dispatch(req) File "/home/lukpater/bin/hg/mercurial-2.3/mercurial/dispatch.py", line 740, in _dispatch cmdpats, cmdoptions) File "/home/lukpater/bin/hg/mercurial-2.3/mercurial/dispatch.py", line 514, in runcommand ret = _runcommand(ui, options, cmd, d) File "/home/lukpater/bin/hg/mercurial-2.3/mercurial/extensions.py", line 189, in wrap return wrapper(origfn, *args, **kwargs) File "/home/lukpater/bin/hg/mercurial-2.3/hgext/color.py", line 364, in colorcmd return orig(ui_, opts, cmd, cmdfunc) File "/home/lukpater/bin/hg/mercurial-2.3/mercurial/extensions.py", line 189, in wrap return wrapper(origfn, *args, **kwargs) File "/home/lukpater/bin/hg/mercurial-2.3/hgext/pager.py", line 130, in pagecmd return orig(ui, options, cmd, cmdfunc) File "/home/lukpater/bin/hg/mercurial-2.3/mercurial/dispatch.py", line 830, in _runcommand return checkargs() File "/home/lukpater/bin/hg/mercurial-2.3/mercurial/dispatch.py", line 801, in checkargs return cmdfunc() File "/home/lukpater/bin/hg/mercurial-2.3/mercurial/dispatch.py", line 737, in <lambda> d = lambda: util.checksignature(func)(ui, *args, **cmdoptions) File "/home/lukpater/bin/hg/mercurial-2.3/mercurial/util.py", line 472, in check return func(*args, **kwargs) File "/home/lukpater/bin/hg/mercurial-2.3/mercurial/extensions.py", line 144, in wrap util.checksignature(origfn), *args, **kwargs) File "/home/lukpater/bin/hg/mercurial-2.3/mercurial/util.py", line 472, in check return func(*args, **kwargs) File "/home/lukpater/bin/hg/mercurial-2.3/hgext/mq.py", line 3528, in mqcommand return orig(ui, repo, *args, **kwargs) File "/home/lukpater/bin/hg/mercurial-2.3/mercurial/util.py", line 472, in check return func(*args, **kwargs) File "/home/lukpater/dos/FSH-10247/dist-2.8.2/fecru-2.8.2/python/hg/hgfelog/hgfelog.py", line 95, in felog felognode(ui, repo, repo[r], **opts) File "/home/lukpater/dos/FSH-10247/dist-2.8.2/fecru-2.8.2/python/hg/hgfelog/hgfelog.py", line 121, in felognode diffParent(ui, repo, ctx, commitState, f, opts.get('patch'), opts.get('converted'), opts.get('merges'), opts.get('changesets')) File "/home/lukpater/dos/FSH-10247/dist-2.8.2/fecru-2.8.2/python/hg/hgfelog/hgfelog.py", line 136, in diffParent processPath(ui, repo, ctx, commitState, format, diffs, svnConversion, f) File "/home/lukpater/dos/FSH-10247/dist-2.8.2/fecru-2.8.2/python/hg/hgfelog/hgfelog.py", line 141, in processPath state = pathstate(repo, ctx, commitState, svnConversion, f) File "/home/lukpater/dos/FSH-10247/dist-2.8.2/fecru-2.8.2/python/hg/hgfelog/hgfelog.py", line 274, in __init__ self._parents = getDeletedFileParents(ctx, path) File "/home/lukpater/dos/FSH-10247/dist-2.8.2/fecru-2.8.2/python/hg/hgfelog/hgfelog.py", line 265, in getDeletedFileParents ancestor0 = parents[0].ancestor(parents[1]) TypeError: ancestor() takes exactly 3 arguments (2 given)
HTR:
1. Unzip attached repo
2. Run:
~/bin/hg/mercurial-2.3/hg --config extensions.felog=/home/.../dist-2.8.2/fecru-2.8.2/python/hg/hgfelog/hgfelog.py --config ui.verbose=false felog default -p -m
This one definitely needs fixing. Not all repos will be affected, however certainly some will be. The workaround is to let FECRU use an older HG version until we fix this properly.
Mercurial 2.3 was released in August, after 2.8, and had a breaking API change.
We could definitely look at getting this fixed on a 2.9 release.
I don't believe many customers would be affected just yet however.