Git存储库的大小与时间

Git存储库的大小与时间,git,Git,我想生成一个总存储库大小与时间(或提交)的关系图或表格 是否有一个git命令或工具可以做到这一点?我尝试了git日志,但它似乎没有导出提交大小的选项。git还没有提供这样的功能 最好的解决方案是在日志上进行iretate,对文件大小进行grep,然后将它们添加到一起 BitBucket的一位制造商(Daniel Rohan)用PERL编写了一个solition: 提交的大小很难定义。首先,大多数提交都会回收大量现有的Git对象。如果在修订版a和B之间不更改文件,B的大小是否应包括该文件的大小?此

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


是否有一个git命令或工具可以做到这一点?我尝试了git日志,但它似乎没有导出提交大小的选项。

git还没有提供这样的功能

最好的解决方案是在日志上进行iretate,对文件大小进行grep,然后将它们添加到一起

BitBucket的一位制造商(Daniel Rohan)用PERL编写了一个solition:

提交的大小很难定义。首先,大多数提交都会回收大量现有的Git对象。如果在修订版a和B之间不更改文件,B的大小是否应包括该文件的大小?此外,存储库大小本身也不是那么容易确定的。由于Git的压缩系统,它会不时地重新打包对象。它这样做的方式可能会受到多种因素的影响,因此如果您再次这样做,它可能不会以相同的方式打包,从而导致不同的总大小


您可以做的是检查每个修订的签出树的大小。当然,你得到的结果将离仓库的大小很远。

< P>除了想出一个明智的答案“仓库的大小意味着什么”之外,你还必须考虑时间对你意味着什么。提交日期?提交日期?当提交实际上可由特定分支访问时?与其他版本控制系统不同,时间在Git环境中通常不太有用

  • 通常在git log输出中显示的提交日期通常是第一次创建提交的时间点。提交可以在离开开发人员的机器之前烘焙几天、几周甚至几个月
  • 提交日期表示创建特定提交对象的时间,因此,使用
    git-format-patch
    重新设置基础或应用于上游分支的提交将获得新的提交日期,即使作者日期保持不变。尽管如此,由于工作在不同的分支中进行,提交日期可能有几个月之久
  • 最后,Git不会记录特定提交变得可访问的时间(与其他版本控制系统记录的提交/签入/提交时间戳最接近的等效时间)。您可能需要通过运行钩子自己记录此信息来监视Git内容

您可以可视化“代码频率”(即随时间增加或删除的代码行的贡献“大小”),而不是试图测量“大小”(这在Git回购中没有意义) 这个想法来自于“

请参见“”,除非您不必将
--author
git log--mumstat
一起使用,但您可以将
git log
--since
--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 }' -

+1该脚本包含一些有趣的策略,用于在Git回购的生命周期中查看文件特性。