Как заставить Git НЕ запрашивать учетные данные

Я использую git clone в скрипте Bash, который принимает любой тип местоположения Git (HTTPS, Git, SSH, файловая система...) и клонирует его. Но этот скрипт должен работать без взаимодействия с любым пользователем. Точнее, я хотел бы, чтобы этот сценарий НЕ ПРИОСТАВЛЯЛСЯ для учетных данных: если местоположение требует учетных данных, а git не может найти их самостоятельно, я хочу, чтобы Git не работал.

Мой сценарий предполагает, что это не его забота, если вы не настроили правильный способ доступа к этим местам без пароля. Однако решение должно позволять узнать, в чем заключалась ошибка (например, вывод ошибки с «Ошибка аутентификации»).

Мне нужно такое поведение просто потому, что это скрипт, его нужно запускать не в интерактивном режиме (задание cron, создание виртуальной машины... и т.д...). Мне нужно, чтобы он потерпел неудачу и не заморозил мой скрипт в ожидании информации, которую я не могу ему передать (и не хочу).

Итак, в моем текущем вопросе я требую, чтобы git clone не срабатывал, вместо того, чтобы спрашивать об учетных данных.

Я не нашел в git clone какой-либо опции, чтобы заставить НЕ запрашивать учетные данные и, желательно, потерпеть неудачу из-за ошибки аутентификации.


person vaab    schedule 09.05.2014    source источник
comment
Используете ли вы SSH для доступа к удаленному репо? Если это так, возможно, вам следует экспортировать свой ключ на сервер, чтобы не запрашивать учетные данные.   -  person Gabriel M    schedule 09.05.2014
comment
@GMGray Я знаю обо всех способах настройки вашей системы или git, чтобы получить доступ к местоположению, не запрашивая учетные данные. Это проблема пользователя. Задача моего скрипта — клонировать репозитории, которым я указал разные местоположения. Я не хочу, чтобы он застрял на запросе учетных данных, поскольку он не предназначен для интерактивного сценария. Спасибо за ваше замечание, я отредактирую свой вопрос, чтобы прояснить эти вопросы.   -  person vaab    schedule 09.05.2014
comment
Как вы подключаетесь? SSH или HTTP?   -  person Nilpo    schedule 09.05.2014
comment
@Nilpo оба, мне нужно быть совместимым с любым клонируемым местоположением git, с которым совместим git. Это скрипт, который не должен добавлять ограничений на местоположение (если это возможно). Его работа будет заключаться в том, чтобы клонировать данное местоположение и потерпеть неудачу, если оно не может сделать это без взаимодействия.   -  person vaab    schedule 10.05.2014


Ответы (1)


ОБНОВЛЕНИЕ: в версии git > 2.3:

GIT_TERMINAL_PROMPT=0 

Для предыдущей версии:

Вот мой трюк, чтобы заставить потерпеть неудачу:

GIT_ASKPASS=/bin/echo git clone ...
person vaab    schedule 09.05.2014
comment
это помогло мне диагностировать проблему при использовании команд git в задаче сборки vsts, поскольку вывод приглашения не отображался даже при использовании --progress. Благодарю вас! - person GeekyDeaks; 27.05.2017
comment
Также может потребоваться GIT_SSH_COMMAND="ssh -oBatchMode=yes" для предотвращения запросов при взаимодействии через канал SSH. - person jdknight; 03.08.2017