如何使用 gitstats 找出 Git 存储库总共有多少个 SLOC 以及每个提交者有多少个 SLOC?

发布于 2025-01-06 04:21:35 字数 1436 浏览 0 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凶凌 2025-01-13 04:21:35

更新(2014 年 7 月 11 日)

我不确定当我第一次回答这个问题时我安装了什么版本,但是当我运行 gitstats / 时,最新版本给了我一个 authors.html 文件path/to/repo/.git /path/to/output/dir/ 包含了我正在寻找的信息。

原始答案

我发现这很简单。您只需键入:

gitstats /path/to/the/repo.git --outputpath=directory_where_you_want_the_output

它会输出带有图表、通过选项卡导航等的整个报告。

注意:您无法知道每个用户贡献了多少行(至少对于 apt-get install gitstats 的 gitstats 版本)代码> 明白了我)。输出很有用,是了解代码库及其贡献者的好方法。我执行了以下操作,以获取特定用户的行数:

git log --author="Some Author <[email protected]>" --oneline --shortstat > some_author.txt

然后,我使用 Python 来解析数据(因为有数百次提交):

>>> import re
>>> file = open('some_author.txt', 'r')
>>> adds, dels = 0, 0
>>> for line in file.readlines():
...     am, dm = re.search(r'\d+(?= insertions)', line), re.search(r'\d+(?= deletions)', line)
...     if am is not None:
...         adds += int(am.group())
...         dels += int(dm.group())
... 
>>> adds, dels
(5036, 1653)
>>> file.close()

Update (July 11th, 2014)

I'm not sure what version i had installed when I first answered this question, but the latest version gave me an authors.html file when I ran gitstats /path/to/repo/.git /path/to/output/dir/ that contained exactly the info I was looking for.

Original Answer

It's pretty simple, I found. You just type:

gitstats /path/to/the/repo.git --outputpath=directory_where_you_want_the_output

It outputs the entire report with charts, navigation via tabs, etc.

Note: You cannot tell how many lines each user has contributed (at least with the version of gitstats that an apt-get install gitstats got me). The output was useful, and is a great way to learn about your code base and its contributors. I did the following, to get the number of lines of a particular user:

git log --author="Some Author <[email protected]>" --oneline --shortstat > some_author.txt

Then, I used Python to parse the data (since there were hundreds of commits):

>>> import re
>>> file = open('some_author.txt', 'r')
>>> adds, dels = 0, 0
>>> for line in file.readlines():
...     am, dm = re.search(r'\d+(?= insertions)', line), re.search(r'\d+(?= deletions)', line)
...     if am is not None:
...         adds += int(am.group())
...         dels += int(dm.group())
... 
>>> adds, dels
(5036, 1653)
>>> file.close()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文