我偶尔会使用昂贵的互联网连接,并且我想知道(至少大约)有多少数据将被推送到远程git push
.
事实上,我想我很喜欢我的评论,可以将其作为答案发布!
当您推送时,git 会创建一个包含所有必需对象的包并将其上传到远程。这意味着我们正在寻找一种方法来预测包装大小。由于包是压缩的,因此很难根据差异或对象大小执行任何操作;我们真正想做的只是看看这个包有多大。如果您可以在构建包之后中断推送,并根据包大小决定继续,那就太好了,但我认为这是不可能的。我最好的猜测是尝试重新创建将被推送的包并检查它。
捆绑文件基本上是一个带有标头信息的包(看看来源 http://git.kernel.org/?p=git/git.git;a=blob;f=bundle.c;hb=HEAD如果你喜欢)。这意味着它是一个方便的瓷器命令,可以创建您关心的大小的文件。 (比尝试使用容易得多打包对象 http://www.kernel.org/pub/software/scm/git/docs/git-pack-objects.html手动。)使用这样的东西:
git bundle create foo.bundle ^origin/master master
这将为您提供一个包,其中包含到达 master 所需的所有内容,前提是遥控器具有 origin/master - 与应该推送的内容完全相同git push origin master
。如果你还有额外的分支要推,你也可以把它们粘上去;它只是采用 rev-list 参数:
git bundle create foo.bundle ^origin/master master ^origin/topic topic ...
只需检查创建的包的大小即可;它应该几乎等于你最终要推动的东西。这确实意味着您最终必须创建两次包(一次是捆绑包,一次是推送),但除非这是一个真正大的推送,需要很长时间才能打包,否则这不应该是一个大问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)