在执行推送之前,是否有办法在mercurial中运行钩子。例如,当我输入hg push
时,我想在代码库上运行JSHint,并在发现任何错误时中止推送。
我首先尝试使用pre-commit
挂钩。这很有效,但在每次提交之前等待几秒钟会很麻烦。此外,我有时会做可能损坏代码的中间提交。
阅读docs for hgrc我发现preoutgoing
和pre-outgoing
这似乎是我喜欢的事情。但这些都没有奏效。他们似乎唯一能做的就是在我输入时运行钩子:
hg outgoing
根本没用。
答案 0 :(得分:4)
找到解决方案。如果其他人想知道同样的事情,请在此处发布。
原来这些文档对我来说很困惑。它告诉:
"pre-<command>"
在执行相关命令之前运行。命令行的内容作为“$ HG_ARGS”传递。解析的命令行参数作为“$ HG_PATS”和“$ HG_OPTS”传递。它们包含内部传递给的数据的字符串表示。 “$ HG_OPTS”是一个选项字典(未指定的选项设置为默认值)。 “$ HG_PATS”是一个参数列表。如果钩子返回失败,则命令不执行,Mercurial返回失败代码。
我认为它引用的<command>
是outgoing
或commit
之类的钩子类型之一,我找不到那里列出的push
钩子。但结果是命令只是任何mercurial命令,所以我可以使用pre-push
。
问题解决了:))