获取git分支大小?

问题描述:

我正在尝试跟踪我正在处理的项目的大小。有没有一种简单的方法可以在磁盘上为不同的分支获取回购大小。我试过获取git分支大小?

git count-objects -v 

但它给出了每个分支相同的回购大小。

+0

别的地方有人建议建立一个“捆绑”只有你需要看看它的大小事情。这可能是你在找什么的一个很好的近似:'混帐束创建 &&杜-sh '。它确实包含了打包和压缩,但不包括使用历史记录(引用,索引文件,配置等)所需的存储库大小。 – fork0

这个问题并没有真正意义 - 在Git中,分公司不单独存放。相反,有一个提交网页,基本上只是存储差异。分支只是指向这个提交网络中特定提交的指针。所以一般来说,分支机构分享很多相同的信息。

如果您想知道单个分支的磁盘空间大小,意思是如果只克隆只有该分支的repo,需要的磁盘空间最少,最简单的方法就是制作回购就像那样,然后询问回购的规模。

+0

我同意你想说的话。我知道git是如何工作的。我想要做的是随着时间的推移增加磁盘大小的使用量。 – avellable

+0

嗯,我想我明白了。也许你可以尝试类似的方法,克隆repo,然后删除一个分支,然后运行'git gc --aggressive'来清理悬挂的节点,然后检查磁盘使用情况? –

+1

很好的答案。有一件事,虽然;你写道:* [...]基本上只是差异存储*。除非你指的是包装,否则这种说法是不正确的。 – Jubobs

这里的东西真丑:

$ git rev-list HEAD |      # list commits 
    xargs -n1 git ls-tree -rl |    # expand their trees 
    sed -e 's/[^ ]* [^ ]* \(.*\)\t.*/\1/' | # keep only sha-1 and size 
    sort -u |        # eliminate duplicates 
    awk '{ sum += $2 } END { print sum }' # add up the sizes in bytes 

这只会算斑点(不承诺,树木等),并不会占到任何包装或跨部门对象共享。但它可以作为有用的基础。

+0

使用'git的转速名单--objects主| git的猫文件--batch检查=“%(对象大小)%(OBJECTTYPE)%(对象名)%(其余的)”'来获得其使用的所有对象的尺寸创建分支的历史(或实际上历史图的任何定义)。它仍不考虑增量压缩或压缩,但提供了需要多少空间来存储存储库的所有唯一数据的准确信息。 – fork0

+0

它是以字节为单位吗? – mr5

+0

@ mr5评论说:'#将字节大小加起来。所以是的,我认为这是:D –