我们在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管理控制台的替代方法):
- 在TFS服务器上,进入服务(services.msc),并在“服务(本地)”中找到“ Visual Studio Team Foundation Build Service Host 2013 ”服务。
- 右键单击服务,然后在“常规”选项卡上单击“停止”
- 在“登录”选项卡上,选择“此帐户”,然后输入您使用wincred进行验证的帐户的详细信息(假定此帐户存在于“项目集合构建服务帐户”下,并具有您的回购所需的所有权限)。
- 记下点击“检查名称”后显示的电子邮件地址。
- 点击“应用”
- 返回“常规”选项卡上,单击“开始”。
- 对“ 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)。
- 在我的情况下,正确保存的凭据看起来像这样(在凭证管理器中,在“通用凭证”下) – 注意没有用户名:
希望这可以帮助有同样问题的人!