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