Как получить организацию github и имя хранилища из локального хранилища клонов с python? - PullRequest
1 голос
/ 29 февраля 2020

Видимо, github3 модуль требует, чтобы вы указали ему организацию github и имя репозитория, так как не может угадать их на основе вашего текущего репозитория.

Я также проверил https://pypi.org/project/GitPython/ но я не смог определить правильные вызовы, которые необходимо сделать, чтобы определить имя организации и имя хранилища.

Я подозреваю, что мне нужно как-то исследовать пульты, но документация как бы подвел меня.

Ответы [ 2 ]

0 голосов
/ 29 февраля 2020

Вы также можете получить URL хранилища просто из конфигурации удаленных устройств, если вы не хотите использовать внешние библиотеки, это просто простое чтение и анализ файла.

Прочитайте файл .git/config, где вы найдете url в подзаголовках конфигурации в формате [remote <remote name>]. Как только вы получите правильный URL-адрес для хранилища и проверите, что источник принадлежит github, вы можете использовать Github publi c REST API, чтобы получить организацию. Документация по API: https://developer.github.com/v3/repos/#get. Если репозиторий принадлежит организации, ответ API json будет содержать ключ organization с полными сведениями об организации.

0 голосов
/ 29 февраля 2020

Вы всегда можете использовать встроенную функцию subprocess для вызова git команд. Смотрите этот вопрос: Как вы можете получить имя Git хранилища в каком-то Git хранилище? .

import subprocess
import basename
import os
output = subprocess.check_output(['git', 'rev-parse', '--show-toplevel'])
repo = os.path.basename(output)

По-видимому, вы можете сделать это в Pygithub. Python - как проверить, находится ли путь под репо git? и извлеките имя репо .

Пример кода из этого ответа (изменил отпечатки на python3):

import git 

# Raises InvalidGitRepositoryError when not in a repo 
repo = git.Repo(".", search_parent_directories=True) 
print("Location "+ repo.working_tree_dir) 
print("Remote: " + repo.remote("origin").url)

Вы можете посмотреть их исходный код и посмотреть, какие команды они тоже бегут.

...