有没有办法估计公共Git存储库的大小而不必克隆它?
我想使用此信息来确保存储库小于特定大小.如果不是,我不想克隆它.
我知道它可以在Github上完成,但是这个存储库托管在专用服务器上.
简短回答:"不."
如果空间完全是一个问题,那么将repo克隆到你最大的可用空间,如果它足够小,可以放在其他地方移动它将是便宜的.
一个非常强大的方法来获取它:把它放在服务器上的post-receive hook中
git for-each-ref refs/size | while read . . ref; do git update-ref --delete $ref; done
set -- $(du -sh .git/objects)
git update-ref refs/size/$1-as-of-$(date +%Y%m%dT%H%M%S%Z) HEAD
Run Code Online (Sandbox Code Playgroud)
而且你可以对它进行远程控制.
简短的回答:Nnn ......也许吧.
答案很长:有一些启发式方法,你可以使用Git传输协议来收集一些信息.
我个人的观察是,对于大多数基于文本的项目,即使对于非常古老的项目,.git大小也很少超过结账大小.
获取info/refs将告诉您存储库中有多少标记和分支.
获取objects/info/packs将告诉您项目包含的文件包.然后,您可以执行HEAD请求(假设它是HTTP)objects/pack/pack-WHATEVERTHEIDIS.pack以查看包文件的大小.这将为您提供存储库大小的下限.
如果磁盘空间有问题(磁盘很便宜,买一个新的),你可以做一个git clone --bare为你节省结账空间.然后,您可以克隆该本地裸版以获得完整的结帐.
最后,如果你很聪明,你可以在对象树中执行HEAD请求以获取每个对象的大小,并在收到标题后忽略对象GET(忽略数据部分).这将为您提供存储库的大小,而无需下载整个存储库.
| 归档时间: |
|
| 查看次数: |
2951 次 |
| 最近记录: |