使用gitpython在文件中添加和删除的行数

时间:2018-02-04 15:31:40

标签: python git gitpython

如何获取/提取添加和删除的行数? (就像我们使用git diff --numstat一样)。

repo_ = Repo('git-repo-path')
git_ = repo_.git
log_ = g.diff('--numstat','HEAD~1') 
print(log_)

将整个输出(添加/删除的行和文件名)打印为单个字符串。可以修改或更改此输出格式以提取有用信息吗?

Output format: num(added) num(deleted) file-name 

修改所有文件。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您想从log_变量中提取数据,然后重新格式化并打印它?如果是这种情况,那么我认为最简单的解决方法是使用正则表达式:

import re

for line in log_.split('\n'):
    m = re.match(r"(\d+)\s+(\d+)\s+(.+)", line)
    if m:
        print("{}: rows added {}, rows deleted {}".format(m[3], m[1], m[2]))

确切的输出,您当然可以在匹配m中获得数据时以任何方式修改。掌握正则表达式可能需要一段时间,但它对小脚本非常有帮助。

但是,请注意,reg exps往往是只写代码,可能很难调试。但是,为了提取这样的小部件,它非常有用。