git ls-remote зависает навсегда, если интернет-соединение прерывается до завершения команды

Я пишу скрипт, который периодически подключается к git remote через SSH, используя шифрование с открытым ключом, и получает хэш-идентификатор для коммита на кончике мастера.

GIT_SSH_COMMAND='ssh -i /root/.ssh/id_rsa_blah' git ls-remote ssh://USER@HOST:PORT/path/to/repo.git --heads refs/heads/master | awk '${print 1}'

Он работает нормально, пока есть доступ к интернету, и для завершения команды требуется около 3-5 секунд. Тем не менее, я имитирую, что произойдет, если интернет отключится во время выполнения команды, отключив Ethernet от компьютера. git ls-remote кажется, навсегда зависает при этом. Я только позволю этому бежать в течение приблизительно 3 минут, но я предполагаю, что это продолжит зависать. Я собираюсь взять обеденный перерыв, поэтому я посмотрю, если команда, наконец, не удастся.

Погуглив, я увидел ссылки на переменную окружения GIT_TERMINAL_PROMPT. Я думаю, что значение этого параметра 0 приводит к тому, что команды git перестают работать. Тем не мение:

GIT_TERMINAL_PROMPT=0 GIT_SSH_COMMAND='ssh -i /root/.ssh/id_rsa_blah' git ls-remote ssh://USER@HOST:PORT/path/to/repo.git --heads refs/heads/master | awk '${print 1}'

все еще висит.

Как я могу получить git ls-remote потерпеть неудачу через определенное время? Я еще не исследовал, связана ли проблема с SSH или ls-remote, но это мой следующий шаг.

0 ответов

Другие вопросы по тегам