我有一个像这样的善变钩子:
[hooks]
pretxncommit.myhook = python:path/to/file:myhook
代码如下所示:
def myhook(ui, repo, **kwargs):
#do some stuff
但在我的例子中,这个钩子运行在使用提交逻辑做其他事情的命令上hg shelve
。有没有办法获取用户输入的命令以避免在该命令上运行挂钩?
也许是这样的:
def myhook(ui, repo, command, **kwargs):
if command is "hg shelve"
return 0
#do some stuff
不幸的是,答案似乎是否定的。我刚刚调试了 hg 3.1 的钩子机制,关于发出哪个命令的信息没有传播到钩子函数中。我能想到的唯一方法是使用调试器 API 来破解一些丑陋的东西,以从调用堆栈中提取信息。
另一个黑客是检查sys.argv
,但我担心这也非常不可靠(因为它无法检测是否通过命令服务器 https://mercurial.selenic.com/wiki/CommandServer).
顺便说一句,我使用此代码片段来附加调试器:
def myhook(ui, repo, **kwargs):
print kwargs
from pdb import set_trace
set_trace()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)