hooks are not working under Mercurial 2.1

Issue #17 open
bbuerger
created an issue

Whenever I try to commit the following error message occurs:
{{{
ben@medphys206:~/x$ hg fixwhitespace
ben@medphys206:~/x$ hg ci -m"Test"
unknown exception encountered, please report by visiting
http://mercurial.selenic.com/wiki/BugTracker
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) [GCC 4.4.3]
Mercurial Distributed SCM (version 2.1)
Extensions loaded: graphlog, hgk, churn, convert, purge, transplant, color, fetch, checkfiles
Traceback (most recent call last):
File "/usr/bin/hg", line 38, in <module>
mercurial.dispatch.run()
File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 27, in run
sys.exit((dispatch(request(sys.argv[1:])) or 0) & 255)
File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 64, in dispatch
return _runcatch(req)
File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 87, in _runcatch
return _dispatch(req)
File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 683, in _dispatch
cmdpats, cmdoptions)
File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 465, in runcommand
ret = _runcommand(ui, options, cmd, d)
File "/usr/lib/pymodules/python2.6/mercurial/extensions.py", line 184, in wrap
return wrapper(origfn, *args,
kwargs)
File "/usr/lib/pymodules/python2.6/hgext/color.py", line 362, in colorcmd
return orig(ui_, opts, cmd, cmdfunc)
File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 737, in _runcommand
return checkargs()
File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 691, in checkargs
return cmdfunc()
File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 680, in <lambda>
d = lambda: util.checksignature(func)(ui, args, cmdoptions)
File "/usr/lib/pymodules/python2.6/mercurial/util.py", line 456, in check
return func(*args,
kwargs)
File "/usr/lib/pymodules/python2.6/mercurial/commands.py", line 1212, in commit
node = cmdutil.commit(ui, repo, commitfunc, pats, opts)
File "/usr/lib/pymodules/python2.6/mercurial/cmdutil.py", line 1264, in commit
scmutil.match(repo[None], pats, opts), opts)
File "/usr/lib/pymodules/python2.6/mercurial/commands.py", line 1207, in commitfunc
editor=e, extra=extra)
File "/usr/lib/pymodules/python2.6/mercurial/localrepo.py", line 1184, in commit
self.hook("precommit", throw=True, parent1=hookp1, parent2=hookp2)
File "/usr/lib/pymodules/python2.6/mercurial/localrepo.py", line 266, in hook
return hook.hook(self.ui, self, name, throw,
*args)
File "/usr/lib/pymodules/python2.6/mercurial/hook.py", line 170, in hook
hookfn = getattr(mod, cmd)
AttributeError: 'module' object has no attribute 'fixup_hook # enables hook to fix files before creating commit'

}}}

Comments (7)

  1. Jeremy Brayton

    I naively enabled all the hooks specified in the Hg Wiki and ran into a variant of this issue on hg clone. I'm using Tortoise so I don't quite have the logs shown but the key to the problem lies in the attribute it looks for.

    It appears that the code is looking for "fixup_hook (trailing parts)" not fixup_hook. My fix was to move the # comment lines above each hook versus the end of the same line. I think I'm explaining that correctly but just in case:

    1. enables hook to check incoming changeset pretxnchangegroup.checkfiles = python:/path/to/checkfiles.py:check_hook (Repeat for the others)...

    I'm using the master and I don't think it's fixed. This should be an adequate workaround and may point you to why it's doing what it is. Unfortunately I don't know enough about python to know what is happening. I would think you could detect the # and trim any whitespace before that to get the method name exactly.

    Hope that helps.

  2. Jeremy Brayton

    arg Markdown! The 1. should be (number sign) above. That should read as 2 lines:

    (comment out) enables hook to check incoming changeset

    pretxnchangegroup.checkfiles = python:/path/to/checkfiles.py:check_hook

    (Repeat for the others)...

  3. Log in to comment