我如何使' git '失败而不是要求凭据

  • 本文关键字:何使 git 失败 node.js git
  • 更新时间 :
  • 英文 :


我正在尝试在脚本中使用git命令,并且我希望git在任何情况下都失败,以便我可以检查用户在请求中提供的错误。

git的当前行为如下:

  • 地址不是git仓库,失败。
  • 用户空间不存在,它要求用户名/密码
  • repo不存在或可能是私有的,它要求用户名/密码
  • 给定的用户名/密码/令牌错误,它要求用户名/密码

但这不仅仅是一个简单的"要求凭证";函数执行,而是git生成许多具有不同进程id的其他进程,并且由于某种原因杀死了原始生成的进程,而没有通知我的生成脚本。(node . js的产卵)

首先,我尝试使用超时来杀死主衍生进程,如果它不写一个响应到它的标准输出,但由于没有进程与该ID了,我无法进一步检查错误。我不得不放弃克隆一个repo,除非提供的地址可以从公共api获取。

我所有的搜索结果都在硬币的另一边,"让它要求密码"。我在想,是我没有为我的目的想出正确的搜索词,还是只是没有这样的方法。

如果我错过了一个标志,或者有其他方法可以做到这一点,请告诉我。

PS:我犹豫了一下,但我已经添加了node.js标签,但这可能是任何可以产生子进程的语言的问题。

如果您想避免Git提示凭证,您可以设置GIT_TERMINAL_PROMPT=0。这将阻止Git本身使用凭据帮助器进行提示或发出任何其他终端请求,但它不会阻止它生成的其他工具(如OpenSSH)进行提示。这是不可能的。

因此,如果你想从大多数主要的托管站点克隆,你最好使用HTTPS url,因为在这种情况下,OpenSSH不会被使用,所有的身份验证提示都是由Git处理的。在这种情况下,如果需要身份验证,它将失败。

请注意,阻止终端提示并不会阻止其他凭证管理器打开窗口等。您需要通过调用Git(如git -c credential.helper= clone)来清除所有凭据帮助程序,并确保GIT_ASKPASSSSH_ASKPASS环境变量都未设置。

最新更新