[Bug 5718] New: Filemerge crashes with an external Windows tool

mercurial-bugs at mercurial-scm.org mercurial-bugs at mercurial-scm.org
Mon Oct 23 22:00:13 UTC 2017


https://bz.mercurial-scm.org/show_bug.cgi?id=5718

            Bug ID: 5718
           Summary: Filemerge crashes with an external Windows tool
           Product: Mercurial
           Version: 4.4-rc
          Hardware: PC
                OS: Windows
            Status: UNCONFIRMED
          Severity: bug
          Priority: urgent
         Component: Mercurial
          Assignee: bugzilla at mercurial-scm.org
          Reporter: matt_harbison at yahoo.com
                CC: lothiraldan at gmail.com,
                    mercurial-devel at mercurial-scm.org

It looks like an issue with the default config registration.  I initially
caught this with TortoiseHg doing a visual diff, but it can be triggered with
core hg by doing a merge where the file changed on both sides.  I used the
evolve repo for convenience:

$ ../hg log -R ../../hg-evolve -r .
changeset:   3181:1893bde71ebc
branch:      stable
user:        Pulkit Goyal <7895pulkit at gmail.com>
date:        Sat Oct 14 18:55:43 2017 +0200
summary:     changelog: add about pager support

$ ../hg merge -R ../../hg-evolve -r 9a223c3adb9d
** Unknown exception encountered with possibly-broken third-party extension
evolve
** which supports versions 4.3 of Mercurial.
** Please disable evolve and try your action again.
** If that fixes the bug please report it to https://bz.mercurial-scm.org/
** Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64
bit (AMD64)]
** Mercurial Distributed SCM (version 4.4-rc+7-6a312fb102d4)
** Extensions loaded: eol, rebase, convert, graphlog, patchbomb, extdiff,
strip, mq, evolve
Traceback (most recent call last):
  File "../hg", line 41, in <module>
    dispatch.run()
  File "c:\Users\Matt\projects\hg\mercurial\dispatch.py", line 85, in run
    status = (dispatch(req) or 0) & 255
  File "c:\Users\Matt\projects\hg\mercurial\dispatch.py", line 173, in dispatch
    ret = _runcatch(req)
  File "c:\Users\Matt\projects\hg\mercurial\dispatch.py", line 313, in
_runcatch
    return _callcatch(ui, _runcatchfunc)
  File "c:\Users\Matt\projects\hg\mercurial\dispatch.py", line 321, in
_callcatch
    return scmutil.callcatch(ui, func)
  File "c:\Users\Matt\projects\hg\mercurial\scmutil.py", line 154, in callcatch
    return func()
  File "c:\Users\Matt\projects\hg\mercurial\dispatch.py", line 303, in
_runcatchfunc
    return _dispatch(req)
  File "c:\Users\Matt\projects\hg\mercurial\dispatch.py", line 940, in
_dispatch
    cmdpats, cmdoptions)
  File "c:\Users\Matt\projects\hg\mercurial\dispatch.py", line 701, in
runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "c:\Users\Matt\projects\hg\mercurial\dispatch.py", line 948, in
_runcommand
    return cmdfunc()
  File "c:\Users\Matt\projects\hg\mercurial\dispatch.py", line 937, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "c:\Users\Matt\projects\hg\mercurial\util.py", line 1183, in check
    return func(*args, **kwargs)
  File "c:\Users\Matt\projects\hg\mercurial\util.py", line 1183, in check
    return func(*args, **kwargs)
  File "c:\Users\Matt\projects\hg\hgext\mq.py", line 3583, in mqcommand
    return orig(ui, repo, *args, **kwargs)
  File "c:\Users\Matt\projects\hg\mercurial\util.py", line 1183, in check
    return func(*args, **kwargs)
  File "c:\Users\Matt\projects\hg\mercurial\commands.py", line 3585, in merge
    labels=labels)
  File "c:\Users\Matt\projects\hg\mercurial\hg.py", line 848, in merge
    labels=labels)
  File "c:\Users\Matt\projects\hg\mercurial\merge.py", line 1979, in update
    stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
  File "c:\Users\Matt\projects\hg\mercurial\merge.py", line 1557, in
applyupdates
    complete, r = ms.preresolve(f, wctx)
  File "c:\Users\Matt\projects\hg\mercurial\merge.py", line 581, in preresolve
    return self._resolve(True, dfile, wctx)
  File "c:\Users\Matt\projects\hg\mercurial\merge.py", line 534, in _resolve
    labels=self._labels)
  File "c:\Users\Matt\projects\hg\mercurial\filemerge.py", line 797, in
premerge
    labels=labels)
  File "c:\Users\Matt\projects\hg\mercurial\filemerge.py", line 672, in
_filemerge
    tool, toolpath = _picktool(repo, ui, fd, binary, symlink, changedelete)
  File "c:\Users\Matt\projects\hg\mercurial\filemerge.py", line 202, in
_picktool
    if check(t, None, symlink, binary, changedelete):
  File "c:\Users\Matt\projects\hg\mercurial\filemerge.py", line 133, in check
    if not _findtool(ui, tool):
  File "c:\Users\Matt\projects\hg\mercurial\filemerge.py", line 110, in
_findtool
    return findexternaltool(ui, tool)
  File "c:\Users\Matt\projects\hg\mercurial\filemerge.py", line 119, in
findexternaltool
    p = util.findexe(p + _toolstr(ui, tool, "regappend"))
TypeError: cannot concatenate 'str' and 'NoneType' objects

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Mercurial-devel mailing list