使用Github API获取所有存储库的最后提交

时间:2019-07-27 03:55:10

标签: python python-3.x git github github-api

我想使用Github API for Python来获取每个存储库并检查对存储库的最后更改。

import git
from git import Repo
from github import Github

repos = []

g = Github('Dextron12', 'password')
for repo in g.get_user().get_repos():
    repos.append(str(repo))

#check for last commit to repository HERE

这将所有存储库都保存在我的帐户上,但是我希望能够对每个存储库进行最后一次更改,并且我想要这样的结果:

13:46:45

我也不介意现在还是12小时。

2 个答案:

答案 0 :(得分:1)

根据文档,您可以获得的最大信息是提交的SHA和提交日期:

https://pygithub.readthedocs.io/en/latest/examples/Commit.html#

以您的示例为例:

g = Github("usar", "pass")
for repo in g.get_user().get_repos():
    master = repo.get_branch("master")
    sha_com = master.commit
    commit = repo.get_commit(sha=sha_com)
    print(commit.commit.author.date)

答案 1 :(得分:1)

from github import Github
from datetime import datetime

repos = {}

g = Github('username', 'password')
for repo in g.get_user().get_repos():
    master = repo.get_branch('master')
    sha_com = master.commit
    sha_com = str(sha_com).split('Commit(sha="')
    sha_com = sha_com[1].split('")')
    sha_com = sha_com[0]
    commit = repo.get_commit(sha_com)
    #get repository name
    repo = str(repo).split('Repository(full_name="Dextron12/')
    repo = repo[1].split('")')
    #CONVERT DATETIME OBJECT TO STRING
    timeObj = commit.commit.author.date
    timeStamp = timeObj.strftime("%d-%b-%Y (%H:%M:%S)")
    #ADD REPOSITORY NAME AND TIMESTAMP TO repos DICTIONARY
    repos[repo[0]] = timeStamp

print(repos)

我使用Damian Lattenero建议的方法获得了时间戳。测试他的代码后,我得到一个AssertationError,这是因为sha_commit返回的是Commit =(“ sha”)而不是“ sha”。因此,我从sha_com中删除了括号并提交,将其全部留给了sha,然后我没有收到该错误,它可以正常工作。然后,我使用datetime将时间戳转换为字符串并将其保存到字典中