我有一个接收后挂钩,需要一分钟才能执行。在执行这个钩子时,没有其他人应该能够推送。
有什么办法可以做到这一点吗?或如何配置 git(在远程存储库中)以使其不允许从客户端推送?
自己动手:在你的 post-receive 钩子中创建一个锁文件,完成后将其删除。添加一个pre-receive 钩子,如果该文件存在则阻塞。
不过,这将允许竞争条件。如果两个客户端同时开始推送,它们都会到达 post-receive 钩子。为什么您需要这种独占访问权限?
似乎没有git config
人拒绝所有的推动。
这给你留下了“打破”访问机制的技巧:
<git>/libexec/git-core/git-http-backend
用于这些事务的可执行文件。这不是一个很好的解决方案,因为在这两种情况下,它都会导致客户端出现错误消息,但是在移动这些文件时您不会收到任何推送。