禁用特定回购源的Mercurial Hook

时间:2014-09-30 14:42:55

标签: mercurial bitbucket mercurial-hook hgrc mercurial-extension

在我的计算机上,我有一些Mercurial提交挂钩,可以在每次提交时运行,确保我正确分支并执行其他一些操作。但我只需要这些用于工作项目。

以下是〜/ .hgrc文件中实现的钩子:

[hooks]
# This hook will warn you if you make a commit directly to trunk.
pretxncommit.default_check=/virtualhosts/mercurial-hooks/default_check.sh

# This hook will warn you if you branch from something other than default.
pretxncommit.branch_check=/virtualhosts/mercurial-hooks/branch_check.sh

对于我的个人项目,我不想使用相同的,烦人的钩子(设置为全局)。我想从bitbucket结帐的所有回购都不使用那些钩子。如何设置它?

1 个答案:

答案 0 :(得分:3)

创建一个名为from_bitbucket.sh的文件,其中包含以下内容:

#!/bin/sh
test -f $HG_PENDING/.hg/hgrc || exit 1
egrep -q 'default.*bitbucket\.org' $HG_PENDING/.hg/hgrc || exit 1
exit 0

授予脚本执行权限(例如chmod 755 from_bitbucket.sh)并将其移动到您希望永久保留的目录。

将你的钩子改为:

pretxncommit.default_check=/path/to/from_bitbucket.sh || /virtualhosts/mercurial-hooks/default_check.sh

如果脚本成功,这将首先执行from_bitbucket.sh并提前中止。该脚本仅检查存储库的default.*bitbucket\.org文件中是否存在与.hg/hgrc匹配的行(如果您从bitbucket推送/拉出,则通常应存在于[paths]部分中)。如果没有.hg/hgrc或者文件不包含匹配的行,它将失败。