Клонирование частного репо с использованием HTTPS с помощью gitpython

Я использую gitpython для клонирования репозитория git через HTTPS. Если проект является частным репозиторием, он запросит имя пользователя и пароль. Как мне взаимодействовать с подсказкой python для передачи переменных имени пользователя и пароля?

from git import Repo

HTTPS_REMOTE_URL = 'https://github.com/username/private-project'
DEST_NAME = 'https-cloned-private-project'
cloned_repo = Repo.clone_from(HTTPS_REMOTE_URL, DEST_NAME)

Результат запуска этого кода:

$ python example.py
Username for 'https://github.com': example
Password for 'https://[email protected]': 

Я знаю, что можно включить имя пользователя и пароль в URL-адрес:

HTTPS_REMOTE_URL = 'https://username:[email protected]/username/private-project'

Однако у меня нет возможности узнать заранее, является ли это частным репо.


person Python Novice    schedule 01.04.2016    source источник


Ответы (1)


у меня это работает при использовании токена доступа github вместо имени пользователя и пароля, где может потребоваться 2FA:

HTTPS_REMOTE_URL = 'https://<access_token>:[email protected]/username/private-project'

person shawnzhu    schedule 14.04.2016
comment
Этот код работает только с публичным репо! а не с рядовым. Ошибка: удаленно: репозиторий не найден. - person Tushar Niras; 08.03.2019
comment
@TusharNiras на самом деле работает независимо от типа репо. Если репозиторий не ваш, вам необходимо получить приглашение. - person Vinicius Mesel; 08.01.2020
comment
@ViniciusMesel прав. когда github отвечает Error : remote: Repository not found, это на самом деле код состояния 404 означает, что либо репозиторий не существует (явная интерпретация), либо этот репозиторий недоступен для этого пользователя (неявная интерпретация, поскольку GitHub не должен сообщать вам, существует ли частный репо или нет). - person shawnzhu; 09.01.2020
comment
У меня та же проблема, что и у @TusharNiras. Я могу клонировать репозиторий, используя ту же команду на моей машине, но не через мой скрипт Python. - person Aakash Singhal; 23.06.2020