因为我们可以跟踪提交历史在 Git 存储库中查找代码的添加/删除,我想了解如何跟踪/统计代码被删除最多的作者。
这可能表明他们最初编写的代码不是那么好(或者他们构建的功能不再需要)。
答案1
查看 github分散火焰,用python编写,描述如下:
描述
显示 git diff 的输出以及 git blame 添加/删除行的附加信息,以便可以轻松找出谁做了什么。
输出
格式保持不变或已添加的行将指示这些行添加到文件的时间。已删除的行将显示删除该行的修订版本。当无法精确定位删除该行的修订版本时,将报告该行所在的最后一个修订版本(如 git blame --reverse 所报告的那样)。发生这种情况时,百分号 (%) 将用作已删除行的前缀(而不是通常的 -)。
difflame 输出示例,使用参数--no-hints
最小化输出:
diff --git a/difflame.py b/difflame.py
index ff65112..ec21fcd 100755
--- a/difflame.py
+++ b/difflame.py
@@ -51,7 +51,7 @@ REVISIONS_INFO_CACHE=dict()
9d2e8d4 (Edmundo Carmona Antoranz 2017-02-02 22:11:09 51 51)
18ecda8 (Edmundo Carmona Antoranz 2017-02-15 00:42:18 52 52) '''
cb52676 (Edmundo Carmona Antoranz 2017-02-15 01:01:06 53 53) caches to save:
-cd789a5 (Edmundo Carmona Antoranz 2017-02-15 01:10:15 54 ) - reverse blamed files # TODO consider cleaning this when we finish processing a file
+cd789a5 (Edmundo Carmona Antoranz 2017-02-15 01:10:15 54) - reverse blamed files
cb52676 (Edmundo Carmona Antoranz 2017-02-15 01:01:06 55 55) - diff of files when analyzing revisions (merges and so on)
cb52676 (Edmundo Carmona Antoranz 2017-02-15 01:01:06 56 56)
18ecda8 (Edmundo Carmona Antoranz 2017-02-15 00:42:18 57 57) BLAMED_FILES_CACHE[originating_revision][final_revision][filename] = lines
可以编写脚本来处理此输出,将已删除行中的作者姓名提取到临时文本文件中,然后对行进行排序和计数(例如使用sort | uniq -c | sort -nr
)。
答案2
来自 StackOverflowhttps://stackoverflow.com/questions/1828874/generating-statistics-from-git-repository/1829302#1829302
旁Git统计(git 历史统计生成器) 提及 雪莉,用 Python 编写,需要 Gnuplot 来绘制图表,还有
- gitstat(SourceForge) 项目 (基于 Web 的 git 统计界面),用 PHP 和 Perl 编写,
- Git 统计,又名 gitstats (用于收集 git 存储库统计数据的指标框架),用 Python 编写,结果为 2008 年 Google Summer of Code 上的 git-statistics 项目这不是一个网络应用程序
- gitinspector是一个相当新的、基于 CLI 的 Python 工具,用于生成漂亮的报告
- 大力神- 没有依赖关系的本机应用程序,用 Go 编写,专门用于高级分析类型。