2

对于某些统计目的,我需要精确计算开发人员为 git repo (HEAD) 的当前状态贡献的字符数量。

我能得到的最接近的是这个命令:

wc -m `git log --no-merges --author="SomeDev" --name-only --pretty=format:"" | sort -u`

这种方法存在一些问题:

  1. 即使有几个人贡献了一个文件 - 所有角色都将归属于最初的作者,
  2. 如果作者的文件SomeDev在某个阶段被重命名,它会失败。

可以git blame以某种方式用于此目的吗?我看到它一方面可以跟踪文件重命名,但它似乎将整行归因于最后一个提交者,即使他可能只更改了其中的几个字符,而其余部分是由前一个提交者贡献给该行的。

4

1 回答 1

1

注意:正如我在评论中所说,没有确切的方法来确定每个角色的作者。


您必须查看每个单独文件的差异,并计算作者写了什么字符。

您可以获得涉及单个文件的提交列表:

git log --format="%h" -- that/file

并在该列表上向后工作。

您可能还要求git log直接输出文件上的差异列表:

git log -p -- that/file

# you can add options for 'git diff', like '-U0' to discard context lines :
git log -U0 -p -- that/file

# and the 'format' to customize the data displayed on each commit :
git log --format="commit: %h%nauthor: %an" ...

据我所知,您必须解析这些差异来确定每个角色的“作者”。

于 2021-02-17T14:28:35.873 回答