为什么我的 Git 预提交挂钩没有在克隆存储库中触发?

发布于 2024-11-05 19:08:48 字数 457 浏览 3 评论 0原文

我刚刚编写了一个小的预提交挂钩来执行我的自定义操作。我的中央存储库位于 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”挂钩不存在,我只能看到默认模板。

有人可以帮忙吗?

I just wrote small pre-commit hook to perform my custom action. My central repository is on a Solaris server and HTTP enabled.

/apps/opt/git/myrepo.git 

I edited pre-commit hook and modified as below:

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

If I clone this repository and perform the commit action using other user, it doesn't give any message, and commits it.
Why is my commit not invoking the pre-commit hook?

Also I could see in my cloned repo under .git/hooks directory, the "pre-commit" hook is not there, I can see only the default templates.

Can anyone help here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

睫毛溺水了 2024-11-12 19:08:48

这里的答案有几个要素:

  • 钩子不会通过克隆传播,它们纯粹是存储库本地的,
  • ,则不会找到所述钩子
  • 如果您克隆定义了钩子的存储库,如果您想阻止在本地提交 存储库,您需要在本地存储库上进行预提交(就像您所做的那样)。确保它是可执行的。
  • 如果您想阻止除“bala”之外的任何人完成的任何提交,您需要在服务器端进行预接收

Few elements of an answer here:

  • Hooks aren't propagated through clones, they are purely local to a repo
  • if you clone a repo where you define a hook, you won't find said hook
  • if you want to prevent a commit on your local repo, you need a pre-commit (like you did) on the local repo. Make sure it is executable.
  • if you want to block any commit done by anyone but 'bala', you need a pre-receive on the server side
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文