我正在编写一个脚本,该脚本使用公钥加密通过SSH定期连接到git远程,并在master尖端获取提交的哈希ID。
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秒才能完成命令。但是,我正在模拟通过断开以太网与计算机的连接而在执行命令时如果互联网断开的情况。 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,但这是我的下一步。