Git存储库的大小与时间的关系

ode*_*its 7 git

我想生成一个总存储库大小与时间(或提交)的图表或表.

有没有git命令或工具可以做到这一点?我已经尝试git log但似乎没有选项导出提交的大小.

pok*_*oke 7

提交的大小很难定义.首先,大多数提交都会回收许多现有的Git对象.如果您不在修订版A和B之间更改文件,B的大小是否应包含该文件的大小?此外,存储库大小本身也不容易确定.由于Git的压缩系统,它会不时地重新包装物体.它的方式可以受到多种因素的影响,因此如果再次执行此操作,它可能不会采用相同的方式,从而导致总大小不同.

您可以做的是检查每个修订版本的签出树的大小.但是,当然,您将获得的结果将远离存储库的大小本身.


DaG*_*ner 5

Git 还没有提供这样的功能。

最好的解决方案是对日志进行 iretate 并 grep 文件大小并将它们添加在一起。

BitBucket 的创建者之一(Daniel Rohan)用 PERL 编写了一个解决方案:

https://confluence.atlassian.com/plugins/servlet/mobile#content/view/292651328


Von*_*onC 5

您不必尝试测量“大小”(这对于 Git 存储库来说没有意义,poke所解释的),您可以可视化“代码频率”(即随着时间的推移添加或删除的行来表示贡献的“大小”) :
这个想法来自“ Introducing the New GitHub Graphs

https://github-images.s3.amazonaws.com/blog/2012/graphs.code-Frequency.png

请参阅“愚蠢的 Git 技巧 - 获取贡献者统计信息”,除非您不一定使用--authorwith git log --numstat,但您可以git log--sinceand--until选项结合使用。

就像是:

git log --since "OCT 4 2011" --until "OCT 11 2011" --pretty=tformat: --numstat | \
  gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END \
  { printf "added lines: %s removed lines: %s total lines: %s\n",add,subs,loc }' -
Run Code Online (Sandbox Code Playgroud)