如何修改gitstats,使其仅使用指定的文件扩展名进行统计?

2024-10-02 02:24:44 发布

您现在位置:Python中文网/ 问答频道 /正文

有关统计生成器的网站是:

http://gitstats.sourceforge.net/

它的git存储库可以从以下位置克隆:

^{pr2}$

我想做的是:

./gitstatus --ext=".py" /input/foo /output/bar

由于无法在不进行大量修改的情况下轻松通过上述选项,我只需硬编码要包含的文件扩展名。在

但是,我不确定要修改的代码的相关部分,即使我知道,我也不确定如何开始这样的修改。在

看起来很简单,但是。。。在


Tags: pygithttpinputoutputnetfoo网站
2条回答

我今天在找同样的东西时发现了这个问题。在阅读了sinelaw的答案后,我研究了代码,最终将项目分成了两部分。在

https://github.com/ShawnMilo/GitStats

我添加了一个“排除扩展”配置选项。它不会影响到输出的所有部分,但它正在到达那里。在

一旦我完全理解了git输出所做的一切,我可能最终会做一个相当广泛的重写。最初的项目差不多是四年前的今天开始的,由于对标准库和Python语言进行了许多更新,可以进行大量的清理工作。在

编辑:显然,即使下面的前一个解决方案也只影响“文件”统计页,这并不有趣。我在找更好的。我们需要修复的线路是254,这:

    lines = getpipeoutput(['git rev-list  pretty=format:"%%at %%ai %%aN <%%aE>" %s' % getcommitrange('HEAD'), 'grep -v ^commit']).split('\n')

以前的尝试是:

不幸的是,git似乎没有提供在提交时(在git日志和git rev列表中)按文件轻松过滤的选项。这个解决方案并不是真正地过滤某些文件类型的所有统计信息(例如标记上的统计信息),而是对根据更改的行数计算活动的部分进行过滤。在

所以我能想到的最好的方法是gitstats的第499行(主脚本):

^{pr2}$

您可以通过在命令中将管道添加到grep中来更改,如下所示:

res = int(getpipeoutput(['git ls-tree -r  name-only "%s"' % rev, 'grep \\.py$', 'wc -l']).split('\n')[0])

或者,您可以拆分“wc-l”部分,将git ls tree的输出转换为一个字符串列表,并使用fnmatch模块过滤结果文件名(然后计算每个文件中的行数,可能使用“wc-l”),但对于您要解决的特定问题,这听起来似乎有些过头了。在

仍然不能解决问题(其余的统计信息将忽略此过滤器),但希望能有所帮助。在

相关问题 更多 >

    热门问题