为什么我的Git预提交钩子在克隆的存储库中不会触发?

时间:2011-05-10 08:24:01

标签: git pre-commit-hook

我刚刚编写了一个小的预提交钩子来执行我的自定义操作。我的中央存储库位于Solaris服务器上并启用了HTTP。

/apps/opt/git/myrepo.git 

我编辑了pre-commit hook并修改如下:

#!/bin/sh -x
if [ $LOGNAME -ne bala ]; then
   echo  "You are not allowed"
   exit 1;
fi

如果我克隆此存储库并使用其他用户执行提交操作,它不会给出任何消息,并提交它。 为什么我的提交没有调用pre-commit钩子?

我也可以在.git/hooks目录下的克隆回购中看到“pre-commit”挂钩不存在,我只能看到默认模板。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:5)

答案的几个要素:

  • 钩子不会通过克隆传播,它们纯粹是回购的本地
  • 如果您克隆一个定义钩子的仓库,则不会找到所述钩子
  • 如果您想阻止本地仓库的提交,您需要在本地仓库上pre-commit(就像您一样)。确保它是可执行的。
  • 如果你想阻止除“bala”之外的任何人提交的任何提交,你需要在服务器端pre-receive