python - 忽略 mercurial hook 中的某些 mercurial 命令

标签 python mercurial hook mercurial-hook

我有一个像这样的 mercurial 钩子(Hook):

[hooks]
pretxncommit.myhook = python:path/to/file:myhook

代码如下:

def myhook(ui, repo, **kwargs):
    #do some stuff

但是这个钩子(Hook)运行在使用提交逻辑做其他事情的命令上,在我的例子中是 hg shelve。有没有办法获取用户输入的命令以避免在该命令上运行 Hook ?

也许是这样的:

def myhook(ui, repo, command, **kwargs):
      if command is "hg shelve"
           return 0
      #do some stuff

最佳答案

不幸的是,答案似乎是否定的。我刚刚调试到 hg 3.1 的 hook 机制,关于发出哪个命令的信息没有传播到 hook 函数中。我能想到的唯一方法是使用调试器 api 破解一些丑陋的东西,以从调用堆栈中提取信息。

另一个 hack 是检查 sys.argv,但我担心这也很不可靠(因为它无法检测是否通过 Command Server 执行了某些操作)。

顺便说一句,我使用这个片段来附加调试器:

def myhook(ui, repo, **kwargs):
    print kwargs
    from pdb import set_trace
    set_trace()

关于python - 忽略 mercurial hook 中的某些 mercurial 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30648564/

相关文章:

mercurial - 使用 hg revert 恢复 Mercurial 中的一组文件

mercurial - 通过TortoiseHg进行Mercurial- merge 命名分支,然后将其关闭

python - 在 scipy.optimize.curve_fit 中应用 "tighter"边界

python - 按两个日期时间之间的日期匹配两个数据帧

bash - "correct"的最简单方法是意外使用 mv 而不是 hg mv?

c++ - 防止 McAfee Dll 注入(inject)

c++ - 关机 Hook C++

c++ - 带有 WH_KEYBOARD 的 SetWindowsHookEx 卡在循环/队列中

python - '编程错误 : function avg(character varying) does not exist' - Django project

python - 如何在 Python 中使用 cd 终端命令