1

我有一个接收后挂钩,需要一分钟才能执行。在执行这个钩子时,没有其他人应该能够推送。

有什么办法可以做到这一点吗?或如何配置 git(在远程存储库中)以使其不允许从客户端推送?

4

2 回答 2

3

自己动手:在你的 post-receive 钩子中创建一个锁文件,完成后将其删除。添加一个pre-receive 钩子,如果该文件存在则阻塞。

不过,这将允许竞争条件。如果两个客户端同时开始推送,它们都会到达 post-receive 钩子。为什么您需要这种独占访问权限?

于 2012-12-05T08:07:30.267 回答
0

似乎没有git config人拒绝所有的推动。

这给你留下了“打破”访问机制的技巧:

  • 如果您的用户通过 ssh 访问您的 git 存储库,请暂时移动 ~/.ssh/authorized_keys。
  • 如果您的用户使用 https 地址,请移动<git>/libexec/git-core/git-http-backend用于这些事务的可执行文件。

这不是一个很好的解决方案,因为在这两种情况下,它都会导致客户端出现错误消息,但是在移动这些文件时您不会收到任何推送。

于 2012-12-05T07:07:39.497 回答