Перенаправление stdout / stderr / stdin 'git clone' - PullRequest
6 голосов
/ 30 ноября 2011

Я хочу написать программу, которая будет клонировать удаленный репозиторий git, а затем делать кучу других вещей.Проблема в том, что «git clone» запрашивает пароль.Он не работает, когда я открываю каналы в stdin / out / err для «git clone», потому что он запускает git-remote-http, который запрашивает пароль для TTY.программа.Я использую Python и Popen из подпроцесса.Код ниже не работает.

Popen(['git', 'clone', 'https://my.git.repo/repo.git'], shell=False, stdin=PIPE, stdout=PIPE, stderr=PIPE)

Как мне этого добиться?

Ответы [ 2 ]

2 голосов
/ 30 ноября 2011

Вы можете git clone https://foo:bar@my.git.repo/repo.git, чтобы получить данные, и git remote set-url origin https://my.git.repo/repo.git, чтобы очистить пароль. Но у вас есть условие гонки между началом клона и изменением URL.

2 голосов
/ 30 ноября 2011

Если вы не хотите использовать аутентификацию по запросу, как сказал комментатор, я бы использовал pexpect для автоматизации такого рода взаимодействия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...