GitPython获取文件提交

时间:2010-08-19 21:37:31

标签: python git

我正在使用gitpython来获取树上的数据..列出文件提交的时间和给出的日志..据我所知

from git import *
repo = get_repo("/path/to/git/repo")
for item in repo.tree().items():
    print item[1]

只列出

之类的内容
<git.Tree "ac1dcd90a3e9e0c0359626f222b99c1df1f11175">
<git.Blob "764192de68e293d2372b2b9cd0c6ef868c682116">
<git.Blob "39fb4ae33f07dee15008341e10d3c37760b48d63">
<git.Tree "c32394851edcff4bf7a452f12cfe010e0ed43739">
<git.Blob "6a8e9935334278e4f38f9ec70f982cdc4f42abf0">

我没有在git.Blog文档中看到你可以获得这些数据的任何地方..我是在咆哮错误的树吗?

4 个答案:

答案 0 :(得分:4)

现在任何人都希望这样做:

最后100个按降序排序:

repo.iter_commits('master', max_count=100)

您可以使用skip进行分页:

repo.iter_commits('master', max_count=10, skip=20)

参考:http://gitpython.readthedocs.org/en/stable/tutorial.html#the-commit-object

答案 1 :(得分:2)

4小时后......我终于明白了

repo = get_repo("/path/to/git/repo")

items = repo.tree().items()
items.sort()

for i in items:
    c = repo.commits(path=i[0], max_count=1)
    print i[0], c[0].author, c[0].authored_date, c[0].message

答案 2 :(得分:1)

提交消息位于commit object tree object。我猜你可以用

来搞定
repo.heads[0].commit.message

(注意:我不知道python。这是基于我的git知识和阅读api文档的一分钟)

答案 3 :(得分:0)

我相信您可以使用blob.data_stream()来获取包含数据原始内容的类文件对象。

我之前从未使用过这个API,所以我可能会稍微偏离。