TFS构建期间的Git操作:"致命:无法读取密码" (使用wincred)

时间:2015-08-24 14:03:00

标签: windows git batch-file tfs

我们在Windows Server 2008 R2 Standard(TFS服务器)上有一个内部TFS 2013更新4, Git 版本 2.5.0.windows.1 。< / p>

我们的TFS构建过程使用InvokeProcess活动从批处理文件中调用Git。

这些是我们从批处理文件调用git(两行用于调试目的):

call git submodule init
call git submodule update

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

enter image description here

当我手动在服务器上运行相同的批处理文件时(即使是非管理员cmd.exe),所有文件都按预期执行,即我不会被提示输入任何用户名或密码

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

有趣的是,Microsoft.TeamFoundation.Build.Activities.Git.GitPull克隆超级项目没有问题,但是如果我要提示Git克隆并通过批处理文件提取,我会得到同样的&#34;致命:无法阅读密码&#34;错误。

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

我需要尝试/做什么才能让Git使用wincred读取所需的密码? 所有的想法和建议将不胜感激......

1 个答案:

答案 0 :(得分:2)

主要问题是我们的 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后台作业代理”服务执行相同操作(我这样做是为了与构建服务保持一致)。
  8. 还有几点需要检查

    • 在TFS服务器上的用户帐户目录中,确保您在步骤4中“检查名称”后看到的电子邮件地址与.gitconfig中[user]下“email”字段中使用的电子邮件地址相匹配。
    • 确保wincred在某些时候提示输入凭据(我首先运行“git config credential.helper store”,然后运行“git config credential.helper wincred”(如果你想做“git config < strong> - global credential.helper store“,然后是”git config - global credential.helper wincred“,然后您需要使用提升的权限运行cmd.exe )。
    • 在我的情况下,正确保存的凭据看起来像这样(在Credential Manager中,在“Generic Credentials”下) - 注意缺少用户名:

    enter image description here

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