我在Android工作室的一个git项目上与一个团队合作,我希望看到每个作者在编写的行或行编辑等方面的贡献...是否有这样的工具/插件可以显示统计信息作者?
Jac*_*uer 24
对于那些喜欢更内置解决方案的人,此脚本只需使用git, grep, & awk:
$ git user-stats
Email Commits Files Insertions Deletions Total Lines
----- ------- ----- ---------- --------- -----------
john.smith@gmail.com 289 35 5361 3293 8654
joe.dirt@yahoo.com 142 17 2631 1756 4387
jack.bauer@fbi.gov 115 9 1407 1107 2514
Run Code Online (Sandbox Code Playgroud)
$ git -C path/to/repo user-stats --since="1 week ago"
Email Commits Files Insertions Deletions Total Lines
----- ------- ----- ---------- --------- -----------
joe.dirt@yahoo.com 20 3 83 634 717
john.smith@gmail.com 21 2 242 110 352
Run Code Online (Sandbox Code Playgroud)
$ git [git options] user-stats [git-log options]
Run Code Online (Sandbox Code Playgroud)
$ git user-stats
Email Commits Files Insertions Deletions Total Lines
----- ------- ----- ---------- --------- -----------
john.smith@gmail.com 289 35 5361 3293 8654
joe.dirt@yahoo.com 142 17 2631 1756 4387
jack.bauer@fbi.gov 115 9 1407 1107 2514
Run Code Online (Sandbox Code Playgroud)
下载脚本,授予其可执行权限,然后将其粘贴到路径中的某个位置。例如:
$ git -C path/to/repo user-stats --since="1 week ago"
Email Commits Files Insertions Deletions Total Lines
----- ------- ----- ---------- --------- -----------
joe.dirt@yahoo.com 20 3 83 634 717
john.smith@gmail.com 21 2 242 110 352
Run Code Online (Sandbox Code Playgroud)
基本上它使用git log --format="author: %ae" --numstat(减去任何空行或二进制文件)来生成如下所示的输出:
author: bob.smith@gmail.com
1 147 foo/bar.py
0 370 hello/world.py
author: john.smith@aol.com
7 6 foo/bar.py
author: jack.bauer@fbi.gov
1 0 super/sekrit.txt
author: john.smith@aol.com
2 1 hello/world.py
Run Code Online (Sandbox Code Playgroud)
以 开头的每个部分author: ...都是一次提交。第一列--numstat是该文件的插入次数,第二列是删除次数。
然后它会遍历每一行awk。每当它遇到以 开头的行时author:,它都会将该行的第二列(该特定提交的作者的电子邮件地址)存储在变量中author,并增加该用户的提交总数。对于后续的每一行,它都会更新该用户的插入、删除和文件数,直到到达以 开头的下一行author:。冲洗并重复直至完成。
最后,它按总行更改(插入+删除)进行排序并打印出所有收集的统计信息。如果您想按其他方式排序,只需将total数组替换为函数中的相关数组即可asorti(...)。例如,要按文件数量排序,您可以将该行更改为:
n = asorti(files, sorted_emails, "@val_num_desc");
Run Code Online (Sandbox Code Playgroud)
请注意, 任何参数/选项都将传递给git log命令并可用于过滤结果
git user-stats --since="2 weeks ago"
输出git log经过:
tr '[A-Z]' '[a-z]'标准化电子邮件地址。我的公司将电子邮件地址大写John.Smith@TheCompany.com,并且根据用户提交的地点/方式,该电子邮件可能会显示为大写或全部小写。这可确保特定电子邮件地址的所有实例始终分组在一起,无论大小写如何。grep -v '^$'删除日志输出中默认显示的空行grep -v '^-'删除--numstat二进制文件的信息,如下所示:- - foo/bar.png另外,git我花了很长时间才发现的一个很酷的功能是,如果您git-some-command在 PATH 中的文件夹中放置一个名为的可执行文件,git 会检测到它,您可以通过以下方式使用它git some-command!这具有能够在每个命令的基础上指定自定义配置设置的额外好处,例如git -c color.ui=always some-command | sed ...。因此,如果您将此脚本放入,比如说,您就可以通过示例中的~/bin/git-user-stats方式使用它git user-stats
Kov*_*lex 15
简单如:
git shortlog -s -n
您应该看看repoXplorer,这是我开发的一个开源项目。它能够计算一个项目(一组 git 存储库)以及一个贡献者和一组贡献者的统计数据。它提供了一个 REST 接口和一个 Web UI。Web UI 为给定的贡献者提供各种信息,例如:
但最好是看看这里的演示实例。
这是贡献者的统计信息页面的屏幕截图(统计信息是根据 repoxplorer 索引的所有存储库计算的,但可以针对特定项目进行过滤):
| 归档时间: |
|
| 查看次数: |
12286 次 |
| 最近记录: |