einpoklum
einpoklum

Reputation: 132220

Mercurial crashes because of the qct extension - which I haven't enabled

On one of my Mercurial repositories, which used to work, when I run hg status I get:

** Unknown exception encountered with possibly-broken third-party extension qct
** which supports versions unknown of Mercurial.
** Please disable qct and try your action again.
** If that fixes the bug please report it to the extension author.
** Python 2.7.12 (default, Sep 29 2016, 13:30:34) [GCC 6.2.1 20160916 (Red Hat 6.2.1-2)]
** Mercurial Distributed SCM (version 3.7.3)
** Extensions loaded: qct, color, pager, extdiff, hgk, graphlog, hggit
Traceback (most recent call last):
  File "/usr/bin/hg", line 43, in <module>
    mercurial.dispatch.run()
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 54, in run
    sys.exit((dispatch(request(sys.argv[1:])) or 0) & 255)
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 120, in dispatch
    ret = _runcatch(req)
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 191, in _runcatch
    return _dispatch(req)
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 924, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 681, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/lib64/python2.7/site-packages/mercurial/extensions.py", line 195, in closure
    return func(*(args + a), **kw)
  File "/usr/lib64/python2.7/site-packages/hgext/pager.py", line 143, in pagecmd
    return orig(ui, options, cmd, cmdfunc)
  File "/usr/lib64/python2.7/site-packages/mercurial/extensions.py", line 195, in closure
    return func(*(args + a), **kw)
  File "/usr/lib64/python2.7/site-packages/hgext/color.py", line 518, in colorcmd
    return orig(ui_, opts, cmd, cmdfunc)
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 1055, in _runcommand
    return checkargs()
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 1015, in checkargs
    return cmdfunc()
  File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 921, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
  File "/usr/lib64/python2.7/site-packages/mercurial/util.py", line 991, in check
    return func(*args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/mercurial/commands.py", line 6365, in status
    opts.get('subrepos'))
  File "/usr/lib64/python2.7/site-packages/mercurial/localrepo.py", line 1826, in status
    listsubrepos)
  File "/usr/lib64/python2.7/site-packages/mercurial/context.py", line 351, in status
    listunknown)
  File "/usr/lib64/python2.7/site-packages/mercurial/context.py", line 1620, in _buildstatus
    s = self._dirstatestatus(match, listignored, listclean, listunknown)
  File "/usr/lib64/python2.7/site-packages/mercurial/context.py", line 1589, in _dirstatestatus
    listclean, listunknown)
  File "/usr/lib64/python2.7/site-packages/mercurial/dirstate.py", line 1134, in status
    full=full).iteritems():
  File "/usr/lib64/python2.7/site-packages/mercurial/dirstate.py", line 950, in walk
    ignore = self._ignore
  File "/usr/lib64/python2.7/site-packages/mercurial/scmutil.py", line 1203, in __get__
    entry.obj = self.func(obj)
  File "/usr/lib/python2.7/site-packages/hggit/gitdirstate.py", line 128, in _ignore
    extrapatterns=patterns)
  File "/usr/lib/python2.7/site-packages/hggit/gitdirstate.py", line 101, in gignore
    return ignorefunc
UnboundLocalError: local variable 'ignorefunc' referenced before assignment

Now, I haven't enabled a qct extension, and I can't find it in my .hgrc nor in the .hg/hgrc in the repository. What's going on here? How can I fix/circumvent this problem?

Notes:

Upvotes: 0

Views: 161

Answers (2)

shirish
shirish

Reputation: 477

Actually are you sure ? You haven't shared what distribution you are using, for example in Debian qct is its own package. I just purged it as I also got similar error.

Upvotes: 0

planetmaker
planetmaker

Reputation: 6044

There are possible system-wide config files. From hg help hgrc:

On Unix, the following files are consulted:

  • "/.hg/hgrc" (per-repository)
  • "$HOME/.hgrc" (per-user)
  • "/etc/mercurial/hgrc" (per-installation)
  • "/etc/mercurial/hgrc.d/*.rc" (per-installation)
  • "/etc/mercurial/hgrc" (per-system)
  • "/etc/mercurial/hgrc.d/*.rc" (per-system)
  • "/default.d/*.rc" (defaults)

As user config files override the system-wide config files you can disable it locally. Quote from https://www.mercurial-scm.org/wiki/UsingExtensions :

To explicitly disable an extension enabled in an hgrc of broader scope, prepend its path with !:

[extensions]

# disabling extension bar residing in /path/to/extension/bar.py

bar = !/path/to/extension/bar.py

# ditto, but no path was supplied for extension baz

baz = !

Upvotes: 1

Related Questions