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

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

Поиск в Google, я видел ссылки на переменную среды 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, но это мой следующий шаг.

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