4

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

/apps/opt/git/myrepo.git 

我编辑了预提交钩子并修改如下:

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

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

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

有人可以在这里帮忙吗?

4

1 回答 1

6

这里的答案的几个要素:

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