Дульвич - клон из аутентификации удаленного репо
Я не мог найти какой-либо ресурс по этой теме. Мне нужно клонировать из частного репозитория, указав имя пользователя и пароль. Однако, когда они предоставляются в качестве аргументов ключевого слова для dulwich.get-client-from-path(), возникает ошибка, сообщающая "неизвестный аргумент" имя пользователя "".
Это кажется простым делом, но я не могу найти подходящий метод.
2 ответа
Попробуйте этот фрагмент:
porcelain.clone("https://user:password@your_git_repo.git")
Это также работает:
porcelain.clone("https://example.com/repo.git", username="user", password="password")
Я быстро проверил, хранятся ли учетные данные локально:
- При использовании синтаксиса and из этого ответа ни имя пользователя, ни пароль нигде не хранятся.
- При использовании метода из ответа harvin имя пользователя сохраняется локально (вы можете проверить это в командной строке с помощью
git remote -v
). Пароль вроде не сохранился.- Это отличается от поведения выполнения
git clone https://user:password@example.com/repo.git
в командной строке, в которой хранятся и имя пользователя, и пароль.
- Это отличается от поведения выполнения
Как я узнал
- Далвич _
porcelain
в документации вообще не упоминается возможность клонирования с аутентификацией. - Исходный код для
porcelain.clone
берет**kwargs
.- Они передаются на
client.get_transport_and_path
. - Это передает их
client.get_transport_and_path_from_url
. - Это передает их
HttpGitClient.from_parsedurl
. Если имя пользователя и пароль присутствуют в URL-адресе, они извлекаются и сохраняются в словаре (вероятно, это то, что заставляет ответ Харвина работать). - Затем словарь снова куда-то передается. Я не проверял это место, потому что тот факт, что код знает о
username
иpassword
ключ вkwargs
было достаточным доказательством для меня, чтобы просто попробовать фрагмент, который я разместил выше, и это сработало.
- Они передаются на