如何在Mercurial中创建预推钩

时间:2014-11-14 08:50:56

标签: mercurial mercurial-hook

在执行推送之前,是否有办法在mercurial中运行钩子。例如,当我输入hg push时,我想在代码库上运行JSHint,并在发现任何错误时中止推送。

我首先尝试使用pre-commit挂钩。这很有效,但在每次提交之前等待几秒钟会很麻烦。此外,我有时会做可能损坏代码的中间提交。

阅读docs for hgrc我发现preoutgoingpre-outgoing这似乎是我喜欢的事情。但这些都没有奏效。他们似乎唯一能做的就是在我输入时运行钩子:

hg outgoing

根本没用。

1 个答案:

答案 0 :(得分:4)

找到解决方案。如果其他人想知道同样的事情,请在此处发布。

原来这些文档对我来说很困惑。它告诉:

  

"pre-<command>"

     
    

在执行相关命令之前运行。命令行的内容作为“$ HG_ARGS”传递。解析的命令行参数作为“$ HG_PATS”和“$ HG_OPTS”传递。它们包含内部传递给的数据的字符串表示。 “$ HG_OPTS”是一个选项字典(未指定的选项设置为默认值)。 “$ HG_PATS”是一个参数列表。如果钩子返回失败,则命令不执行,Mercurial返回失败代码。

  

我认为它引用的<command>outgoingcommit之类的钩子类型之一,我找不到那里列出的push钩子。但结果是命令只是任何mercurial命令,所以我可以使用pre-push

问题解决了:))

相关问题