是否可以根据其大小限制git推送?
我在远程服务器上有一个git存储库。当我的用户对这个远程服务器执行“git push”时,我想根据它的大小限制推送。让我们说,如果推送的大小超过100MB,推送应该停止。是否可以根据其大小限制git推送?
我正在尝试使用远程git存储库上的预接收钩来执行此操作。
在stackoverflow.com中有一些解决方案。我试过了。但是,他们都不在远程存储库中工作。
任何人都可以帮忙吗?
你不能这样做。当预接收和更新挂钩运行时,包(所有数据)已经被接收。剩下要做的就是更新引用,这就是钩子允许你放弃的东西。从手册页:
在开始更新远程存储库上的引用之前,调用预接收钩子。
并且有关于更新挂钩的相同声明。
即使git receive-pack
知道它将接收的所有内容的最终大小,我甚至不确定对于一般传输机制。
虽然你真的想解决什么问题?从耗时的推动中保存用户? (他们可以自己取消;从用户的角度来看很明显)。远程控制磁盘空间?在大多数情况下,您可能只需限制对可信的用户的访问权限,而不要手动处理异常。
如果你绝对必须这样做,你真的能做到这一点的唯一方法是通过在用户身上包装推动,以便他们运行my-push
,它以某种方式估计他们即将到来的大小推送,并决定是否实际推送 - 但随后你又回到了信任用户,因为如果他们不使用该包装,他们可以推动他们想要的。
感谢Jefromi的回应。我正在尝试检查git远程存储库是否会通过推送超出配额限制。 – MDT 2012-02-14 10:30:27
我想一个有趣的问题是你为什么需要这样做? – 2012-02-12 17:02:51
检查git远程存储库是否会超过推送的配额限制。 – MDT 2012-02-14 10:14:52