在TFS构buildGit操作:“致命:无法读取密码”(wincred使用)

我们在Windows Server 2008 R2 Standard(TFS服务器)上安装了TFS 2013 Update 4,其中Git版本为2.5.0.windows.1

我们的TFS构build过程使用InvokeProcess活动从batch file中调用Git。

这些是我们从batch file中调用git(为了debugging目的,在两行中):

call git submodule init call git submodule update 

这是给我一个问题的第二行,如下所示:

在这里输入图像说明

当我手动(即使从非pipe理员cmd.exe)在服务器上运行相同的batch file,都按预期方式执行,即我没有提示input任何用户名或密码

我们目前正在使用wincred作为我们的凭据帮手,试过了:

  • winstore,
  • git-credential-store ,
  • 通过凭证pipe理器添加通用Windows凭据(同时尝试git: http:// xxxxxx:8080和http:// xxxxxx:8080 )。
  • 在.gitconfig全局和回购中设置凭据。

有趣的是,Microsoft.TeamFoundation.Build.Activities.Git.GitPull克隆超级项目没有问题,但如果我提示Git克隆并通过batch file,我得到相同的“致命的:无法读取密码”错误。

不幸的是,我们没有升级到TFS 2015的选项,加载子模块显然是勾选checkbox的问题。 在纯文本中包含用户名和密码作为命令的一部分也不是一个选项。

我需要做什么来让Git使用wincred读取所需的密码? 所有的想法和build议将不胜感激…

主要的问题是我们的TFS Build服务在NETWORK SERVICE帐户下运行 ,而不是我输入密码的帐户。

我对解决方案采取的步骤(作为使用TFS管理控制台的替代方法):

  1. 在TFS服务器上,进入服务(services.msc),并在“服务(本地)”中找到“ Visual Studio Team Foundation Build Service Host 2013 ”服务。
  2. 右键单击服务,然后在“常规”选项卡上单击“停止”
  3. 在“登录”选项卡上,选择“此帐户”,然后输入您使用wincred进行验证的帐户的详细信息(假定此帐户存在于“项目集合构建服务帐户”下,并具有您的回购所需的所有权限)。
  4. 记下点击“检查名称”后显示的电子邮件地址。
  5. 点击“应用”
  6. 返回“常规”选项卡上,单击“开始”。
  7. 对“ Visual Studio Team Foundation后台作业代理 ”服务(我为此与构建服务保持一致)做同样的事情。

还有几点值得检查

  • 在TFS服务器上的用户帐户目录中,确保在步骤4中的“检查名称”之后看到的电子邮件地址与.gitconfig中[user]下的“email”字段中使用的电子邮件地址匹配。
  • 确保你在某些时候被wincred提示输入凭据(我通过先运行“git config credential.helper store”然后运行“git config credential.helper wincred”(如果你想要做的话)“git config –global credential .helper store“,然后是”git config –global credential.helper wincred“,那么你需要用提升的权限运行你的cmd.exe)。
  • 在我的情况下,正确保存的凭据看起来像这样(在凭证管理器中,在“通用凭证”下) – 注意没有用户名:

在这里输入图像说明

希望这可以帮助有同样问题的人!