git log - 关注,gitpython方式

时间:2012-04-09 12:27:08

标签: python git gitpython

我正在尝试访问单个文件的提交历史记录,如:

git log --follow -- <filename>

我必须使用gitpython,所以我现在正在做的是:

import git 
g = git.Git('repo_dir') 
hexshas = g.log('--pretty=%H','--follow','--',filename).split('\n') 

然后我构建提交对象:

repo = git.Repo('repo_dir')
commits = [repo.rev_parse(c) for c in r]

有没有办法以更加gitpython-ic的方式做到这一点? 我同时尝试了commit.iter_parents()commit.iter_items(),但他们都依赖git-rev-list,因此他们没有--follow选项。

3 个答案:

答案 0 :(得分:10)

例如,

使用范围时间:

g = git.Git("C:/path/to/your/repo") 
loginfo = g.log('--since=2013-09-01','--author=KIM BASINGER','--pretty=tformat:','--numstat')
print loginfo

输出:

3       2       path/in/your/solutions/some_file.cs

您可以看到添加的行,删除的行和包含这些更改的文件。

答案 1 :(得分:1)

我建议您改用 PyDriller (它在内部使用GitPython)。更容易使用:

for commit in RepositoryMining("path_to_repo", filepath="here_the_file").traverse_commits():
    # here you have the commit object
    print(commit.hash)

答案 2 :(得分:0)

pydriller太棒了!感谢您的推荐。