如何在Mercurial中创建预推钩

Ren*_*soo 3 mercurial mercurial-hook

有没有办法在执行推送之前先勾上钩子。例如,当我键入代码时,我想在代码库上运行JSHint;hg push发现任何错误时,我将中止推送。

我首先尝试使用pre-commit钩子。那行得通,但是在每次提交之前等待几秒钟是很麻烦的。此外,我有时会用可能损坏的代码进行中间提交。

阅读我发现的hgrc文档preoutgoingpre-outgoing这似乎是我想要的东西。但是这些没有用。他们似乎唯一要做的就是在键入时运行钩子:

hg outgoing
Run Code Online (Sandbox Code Playgroud)

对我完全没有用。

Ren*_*soo 5

找到了解决方案。如果有人想知道同一件事,请将其张贴在这里。

原来这些文档对我来说很混乱。它告诉:

"pre-<command>"

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

我以为<command>它所指的是钩子类型之一,例如outgoingcommit,我push在那里找不到钩子。但是事实证明,该命令只是任意命令,因此我可以使用pre-push

问题已解决:)