我在远程服务器上有一个git存储库。当我的用户对这个远程服务器进行“git push”时,我想根据它的大小来限制推送。让我们说,如果推送的大小超过100MB,则应该停止推送。
我正在尝试使用远程git存储库上的预接收挂钩。
stackoverflow.com中的一些解决方案存在相关问题。我试过了。但是,他们都没有在远程存储库中工作。
有人可以为此提供帮助吗?
答案 0 :(得分:0)
你不能这样做。到预接收和更新挂钩运行时,已经收到了包(所有数据)。剩下要做的就是更新引用,这就是钩子允许你中止的内容。从联机帮助页:
在开始更新远程存储库上的ref之前,调用预接收挂钩。
关于更新挂钩有一个相同的声明。
我甚至不确定,对于一般的运输机制,即使git receive-pack
知道它将要接收的所有东西的最终大小。
你实际上试图解决什么问题?节省用户的时间吗? (他们可以自己取消它们;从用户的角度来看这很明显。)在遥控器上控制磁盘空间?在大多数情况下,您可能只是限制对您可信赖的用户的访问权限,以免弄乱它,并手动处理异常。
如果你绝对必须这样做,你真正能够做到的唯一方法就是将推送包裹在用户身边,这样他们就可以my-push
运行,以某种方式估计他们的大小。重新推动,并决定是否真正推动 - 然后你又回到信任用户,因为如果他们不使用那个包装,他们可以推动他们想要的东西。