Дульвич - клон из аутентификации удаленного репо

Я не мог найти какой-либо ресурс по этой теме. Мне нужно клонировать из частного репозитория, указав имя пользователя и пароль. Однако, когда они предоставляются в качестве аргументов ключевого слова для 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в командной строке, в которой хранятся и имя пользователя, и пароль.

Как я узнал

  1. Далвич _ porcelainв документации вообще не упоминается возможность клонирования с аутентификацией.
  2. Исходный код для porcelain.cloneберет**kwargs.
    • Они передаются на client.get_transport_and_path.
    • Это передает их client.get_transport_and_path_from_url.
    • Это передает их HttpGitClient.from_parsedurl. Если имя пользователя и пароль присутствуют в URL-адресе, они извлекаются и сохраняются в словаре (вероятно, это то, что заставляет ответ Харвина работать).
    • Затем словарь снова куда-то передается. Я не проверял это место, потому что тот факт, что код знает оusernameиpasswordключ вkwargsбыло достаточным доказательством для меня, чтобы просто попробовать фрагмент, который я разместил выше, и это сработало.
Другие вопросы по тегам