如何防止git接收

如何防止git接收,git,Git,我有一个post接收钩子,需要一分钟才能执行。在执行这个钩子时,其他任何人都不能推 我有什么办法可以做到这一点吗?或者如何配置git(在远程存储库中),使其不允许从客户端推送?似乎没有拒绝所有推送的方法 这就给您留下了“打破”访问机制的窍门: 如果用户通过ssh访问git repos,请暂时移动~/.ssh/authorized_密钥 如果您的用户使用https地址,请移动用于这些事务的/libexec/git core/git http后端可执行文件 这不是一个很好的解决方案,因为在这两种

我有一个post接收钩子,需要一分钟才能执行。在执行这个钩子时,其他任何人都不能推


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

似乎没有拒绝所有推送的方法

这就给您留下了“打破”访问机制的窍门:

  • 如果用户通过ssh访问git repos,请暂时移动~/.ssh/authorized_密钥
  • 如果您的用户使用https地址,请移动用于这些事务的
    /libexec/git core/git http后端
    可执行文件

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

自己动手:在post receive钩子中创建一个锁定文件,并在完成后将其删除。如果该文件存在,请添加阻止该文件的


不过,这将允许比赛条件。如果两个客户端同时开始推送,它们都将到达post接收挂钩。为什么您需要这种独占访问?

实际上我更喜欢这种解决方案:您可以在预接收挂钩中设置一条明确的错误消息+1.