web-dev-qa-db-ja.com

git log-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_オプションがありません。

34

例えば、

範囲時間あり:

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

追加された行、削除された行、およびこれらの変更を含むファイルを確認できます。

13
mimin0

代わりにPyDrillerを使用することをお勧めします(内部でGitPythonを使用しています)。はるかに使いやすい:

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