我想生成一个总存储库大小与时间(或提交)的图表或表。
是否有git命令或工具可以执行此操作?我尝试过git log
但似乎没有选项可以导出提交的大小。
答案 0 :(得分:7)
提交的 size 非常难以定义。首先,大多数提交都会回收许多现有的Git对象。如果您不在修订版A和B之间更改文件,B的大小是否应包含该文件的大小?此外,存储库大小本身也不容易确定。由于Git的压缩系统,它会不时地重新包装物体。它的方式可以受到多种因素的影响,因此如果再次执行此操作,它可能不会采用相同的方式,从而导致总大小不同。
您可以做的是检查每个修订版本的签出树的大小。但是,当然,您将获得的结果将远离存储库的大小本身。
答案 1 :(得分:3)
Git尚未提供此类功能。
最好的解决方案是对日志进行审核,然后将文件大小并添加到一起。
BitBucket(Daniel Rohan)的制造商之一在PERL中写了一篇专辑:
https://confluence.atlassian.com/plugins/servlet/mobile#content/view/292651328
答案 2 :(得分:3)
您可以直观地显示“代码频率”,而不是尝试衡量“尺寸”(使用Git仓库,as explained poke无效)。即随着时间的推移增加或删除的线条的贡献“大小”:
这个想法来自“Introducing the New GitHub Graphs”
请参阅“Stupid Git Trick - getting contributor stats”,但您不一定会将--author
与git log --mumstat
一起使用,但可以将git log
与--since
和{{--until
结合使用1}}选项。
类似的东西:
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 }' -
答案 3 :(得分:2)
除了提出“存储库大小甚至意味着什么?”的明智答案之外,您还必须考虑对您来说意味着什么时间。作者提交日期?提交日期?当提交实际上可以通过特定分支到达时?与其他版本控制系统相反,时间在Git上下文中通常不太有用。
git log
输出通常是第一次创建提交的时间点。在离开开发者的机器之前,提交者可以烘烤数天,数周甚至数月。git format-patch
进行重新定义或应用于上游分支将获得新的提交日期。但是,由于工作在不同的分支机构进行,提交日期可能会持续数月。