1

在我的计算机上,我有一些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 签出的所有存储库都不要使用这些钩子。我该如何设置它来做到这一点?

4

1 回答 1

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该脚本仅检查存储库文件中是否存在匹配行(如果您从 bitbucket 推送/拉取,则该部分.hg/hgrc通常应该存在该部分)。[paths]如果没有.hg/hgrc或文件不包含匹配的行,它将失败。

于 2014-09-30T16:27:07.867 回答