Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 由于身份验证问题,在提取时被卡住_Git_Jenkins_Tfs - Fatal编程技术网

Git 由于身份验证问题,在提取时被卡住

Git 由于身份验证问题,在提取时被卡住,git,jenkins,tfs,Git,Jenkins,Tfs,我有一台运行在Windows 2012 R2 x64上的Jenkins(2.0 Beta-2)服务器,新版本配置为从TFS GIT(2013)获取源文件。我已经安装了Microsoft提供的Git for Windows版本,该版本声称可以解决Git CLI和TFS Git之间的身份验证问题 My.gitconfig如下所示: [credential] helper = manager interactive = never validate = false in

我有一台运行在Windows 2012 R2 x64上的Jenkins(2.0 Beta-2)服务器,新版本配置为从TFS GIT(2013)获取源文件。我已经安装了Microsoft提供的Git for Windows版本,该版本声称可以解决Git CLI和TFS Git之间的身份验证问题

My.gitconfig如下所示:

[credential]
    helper = manager
    interactive = never
    validate = false
    integrated = true
Jenkins在服务帐户下运行,没有交互会话。此服务帐户是生成服务器上本地管理组的成员,已正确配置为TFS上的参与者。这里的问题是,当Jenkins构建启动时,它会在以下命令期间挂起:

git.exe -c core.askpass=true fetch --tags --progress http://my.tfs.server:8080/tfs/collection/_git/MyProject +refs/heads/*:refs/remotes/origin/*

对我来说,很明显,它被卡住了,要求提供凭据,尽管我已经将其设置为使用git凭据管理器。我还尝试使用GCM中的“store”命令存储服务帐户凭据,但失败了,出现了一个奇怪的错误(使用它的语法非常混乱,因此可能是我在尝试时出错)。

经过一段时间的挖掘,我发现我没有使用正确版本的Git for Windows。 众所周知,Windows的“标准”Git不能很好地与TFS Git配合使用,主要原因是缺少Kerberos支持。我以为我用的是正确的版本,但我没有

作为构建环境设置的一部分,我安装了Visual Studio 2015。除此之外,它还安装了一个不兼容的Git for Windows版本,这个版本与TFS Git不兼容(我真的不知道为什么!)。即使在安装之后,已安装的GIT版本仍然是不兼容的版本

长话短说:我必须手动卸载GIT和GCM,只安装GCM,然后在安装过程中安装正确版本的GIT客户端

在那之后,只需重新启动服务器,事情就会“神奇地”工作。

对于我们来说,完全取消设置“credential.helper”git config变量就是答案。从Git 2.5.0升级到2.8.4后,我们的作业挂起在完全相同的位置,我们的Jenkins服务作为本地系统运行,因此执行以下操作来取消设置变量:

git config --global --unset credential.helper
git config --system --unset credential.helper
无需重新启动或卸载/重新安装。之后,Git的构建成功了


Jenkins Git客户端插件似乎依赖于所设置的变量,根据credential helper,当没有定义凭证助手时,会使用它。

我也遇到同样的问题,很抱歉告诉您,我的解决方案是切换到ubuntu服务器或尝试在docker容器中运行Jenkins,这两个容器都适用于Meth。该问题被标记为无法修复[2]由于Git版本compatibility@ZeRubeus你有这个问题的链接吗?@ZeRubeus看到我找到的解决方案了吗。就像我说的,这是git版本的问题:)@ZeRubeus从你的评论来看,这似乎没有办法,事实并非如此。它现在的工作方式正是我所期望的。对于那些使用Chocomey安装git(在Windows上)的人来说,现在有一个包可以执行上面的--system命令。谢谢!运行这些命令修复了Jenkins安装过程中的“git fetch”(git fetch)超时问题,Jenkins安装使用托管在on-prem TFS 2015服务器(http basic auth)上的git存储库。现在,Chocolate软件包还有一个
/NoCredentialManager
功能,这比我前面提到的单独软件包要好得多。