从提交获取 GitHub 存储库 URL



我想从提交哈希中获取GitHub存储库URL。

我很快就找到了这个解决方案:

import json
import requests
def search_commits(sha):
   headers = {'Accept': 'application/vnd.github.cloak-preview'}
   req = requests.get('http://api.github.com/search/commits',
       {'q': sha},
       headers=headers)
   return json.loads(req.text)

commit = search_commits('e83c5163316f89bfbde7d9ab23ca2e25604af290')['items'][0]
clone_url = commit['repository']['url']

我尝试了相同的PyGitHub

from github import Github
g = Github()
commit = g.search_commits('e83c5163316f89bfbde7d9ab23ca2e25604af290')[0]

不幸的是,在这个结果中(即使在commit.raw_data中(,也没有关键repository

似乎 PyGitHub 使用如下所述的search/commits:https://developer.github.com/v3/search/#search-commits

如何获取仓库的 URL?

一种可能的麻烦是:

import re
repo = g.get_repo(
    re.search('repos/(.*?)/commits', c.raw_data['url']).group(1)
)
clone_url = repo.clone_url

该 URL 在 _rawData 中可用,但我怀疑这是预期用途,前缀下划线通常是为了表示私有属性

from github import Github
g = Github()
commit = g.search_commits('e83c5163316f89bfbde7d9ab23ca2e25604af290')[0]
url = commit._rawData['repository']['url']
print(url)

相关内容

最新更新