Получить URL репозитория GitHub из коммита

1

Я хотел бы получить URL репозитория GitHub от Commit HASH.

Я быстро нашел это решение:

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
  • 0
    Комитеты не знают своих URL, так как их можно отправить на множество удаленных устройств. Какую информацию вы хотите получить с URL?
  • 0
    @phd, как вы можете объяснить, что я могу получить хранилище из объекта коммита (см. kludge)?
Теги:
github

1 ответ

0

URL доступен в _rawData, но я сомневаюсь, что он предназначен для использования, префикс подчеркивания обычно делается для обозначения частного атрибута

from github import Github
g = Github()

commit = g.search_commits('e83c5163316f89bfbde7d9ab23ca2e25604af290')[0]
url = commit._rawData['repository']['url']

print(url)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню