git克隆 – 失败,而不是提示凭据

当在自动化工具 – networking前端,CI系统中克隆git仓库时,有时git克隆调用会打开一个提示,询问用户名和密码(例如,克隆一个不存在的Github仓库时,或者在缺lessssh密钥的新节点上)。

我怎么让GIT失败(最好有一个明智的错误信息和退出代码),而不是等待服务器进程给它一个用户名和密码?

在git版本2.3中有一个环境variablesGIT_TERMINAL_PROMPT ,当它设置为0将禁用凭据提示。

你可以在man git (在更新到git版本2.3 )或者在github的这个博客文章中获得更多关于它的信息。

例子:

  • git clone https://github.com/some/non-existing-repo会提示input用户名和密码
  • GIT_TERMINAL_PROMPT=0 git clone https://github.com/some/non-existing-repo将失败,不提示input用户名和密码

根据你如何运行git,redirect标准input或标准输出,以便他们没有连接到terminal将停止从提示git的细节,只是导致它的错误。

这也将允许您将错误(或至less是日志)显示到Web服务。

如果您使用ssh身份validation,并在Linux上,则可以创build一个ssh命令replace来禁用此。

创build一个名为“sshnoprompt.sh”的文件:

ssh -oBatchMode=yes $@

使用chmod +x sshnoprompt.sh使该文件可执行

那么当启动git时:

GIT_SSH="sshnoprompt.sh" git clone foo@dummyserver:not_a_repo

它不会允许任何交互式的混帐提示或问题 – 它不应该能够要求用户的任何东西。