用python解析git日志文件

2024-10-01 09:27:35 发布

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

所以我需要这样分析:

commit e397a6e988c05d6fd87ae904303ec0e17f4d79a2
Author: Name <email@email.com>
Date:   Sat Jul 9 21:29:10 2011 +0400

    commit message

 1 files changed, 21 insertions(+), 11 deletions(-)

并获取作者姓名和插入和删除的数量。在

我的名字是:

^{pr2}$

对于我掌握的数字:

re.findall(r" (\d+) insertions\S+, (\d+) deletions",gitLog)

但是我想用一个正则表达式得到一个包含名称、插入和删除的元组的列表。在

我试着做一些事情

re.findall(r"Author: (.+) <.+ (\d+) insertions\S+, (\d+) deletions",gitLog,re.DOTALL)

但它什么也不返回。。。在

那么我的错误是什么?正则表达式应该是什么样子?在

升级: wRAR是对的,但是不知怎么的,当我读到我的文件并试图解析它时,我得到了整个文件作为一个名称,然后是最后一次插入和删除,所以它匹配整个文件,而不是一次提交。。。[.+]获取整个文件,但不是提交的一部分。。。在


Tags: 文件namere名称comdateemailsat
3条回答

如果您有权访问repo而不是git log的一些文本转储,则可以省去解析的麻烦并生成不同的日志输出:

git log  pretty="%an"  numstat

将生成表单的输出:

Author Name

lines_inserted lines_deleted modified_file

你甚至不需要正则表达式。如果您想使用regex,则需要在插入后匹配(+),否则它根本不匹配,也不会捕获数字。在

您应该使用(直接使用或借用代码)现有的包,例如GitPython,但是关于您的regex问题,为提供的文本提供的regex返回[('Name', '21', '11')],所以我认为这是正确的。在

所以我的问题的答案是:

re.findall(r"Author: (\S+) <.+\n.+\n\n.+\n\n.+ (\d+) insertions\S+, (\d+) deletions",gitLog)

不过还是谢谢你的回答。在

相关问题 更多 >