Linux Git ls remote未在RHEL中返回数据

Linux Git ls remote未在RHEL中返回数据,linux,git,ls-remote,Linux,Git,Ls Remote,我们正在进行一个项目,其中所有开发环境都使用Vagrant运行Ubuntu14.04实例。我们的CI构建和部署服务器正在运行RHEL 6.5。我们使用DUO构建Nodejs组件,在构建时,我们通过编程从git URL克隆依赖项。我们发现这在Ubuntu上一直有效,但在RHEL上挂起。当我们仔细观察时,发现以下命令存在问题: git ls-remote --tags --heads https://<username>:<authtoken>@github.com/<

我们正在进行一个项目,其中所有开发环境都使用Vagrant运行Ubuntu14.04实例。我们的CI构建和部署服务器正在运行RHEL 6.5。我们使用DUO构建Nodejs组件,在构建时,我们通过编程从git URL克隆依赖项。我们发现这在Ubuntu上一直有效,但在RHEL上挂起。当我们仔细观察时,发现以下命令存在问题:

git ls-remote --tags --heads https://<username>:<authtoken>@github.com/<path-to-repo>
git ls remote--tags--heads https://:@github.com/
当它在我们的构建服务器实例上运行时,它不会返回任何数据,但在我们的Ubuntu上运行良好

为了进行调试,我在云中使用了一个RHEL实例,发现我可以通过将带有RHEL的OTB的git的1.7.x版本升级到1.9.4来解决这个问题。但这在构建实例上不起作用。我看不出这两个实例的git配置有任何不同。由于我无法定期访问构建服务器,因此我找到了一个Centos映像,可以在其中重现问题。我已经去掉了它和我的ubuntu图像上的git配置设置,所以它们是相同的。我看不出是什么导致了这个问题


有什么想法吗?

过了一段时间,我们找到了我们认为的答案。通过yum安装git1.7时,会得到一个依赖项perl-git。我们遇到的最初问题是,在1.7下,当下载带有github令牌的git repo组件时,会出现密码提示。这显然是CI上下文中的一个问题,因为没有人可以输入密码

最初的问题通过升级到git的最新版本得到了解决,在我们的例子中是1.9.4,它是我们从源代码构建的。这就是本文中提到的问题所在,git ls remote没有返回任何内容。当我们从旧的1.7安装中删除perl Git时,这个问题就消失了


我们曾希望从源代码构建1.7,并在没有perl Git的情况下安装,以查看是否所有问题都消失了,但我们没有时间了。所以现在,我们认为答案与perl Git包存在冲突。

尝试使用
Git\u TRACE=2 Git\u TRACE\u PACKET=1 Git运行…
,这将导致Git提供更多调试信息
GIT_TRACE_PACKET
应提供有关客户端和服务器之间通信的更多信息。希望它能让你了解这个问题并解决它。我在两张图片上都试过了。在运行的RHEL上,获得了一系列显示命令的跟踪,然后从git返回了变更集的所有数据包。在Centos映像上,我看到了前两个命令,但没有看到任何命令。什么都不出去,什么都不回来:
trace:内置:git'ls remote'--tags'--heads''https://:@github.com/visionmedia/superagent'trace:run_命令:'git remote https''https://:@github.com/visionmedia/superagent''https://::@github com/visionmedia/superagent'
我觉得你有网络问题。它可以是任何数量的东西,但我怀疑它是否特定于Git。DNS是否从生成服务器工作?是否允许从生成服务器到GitHub的通信?您可以尝试使用openssl连接到GitHub,以确认这一点。命令openssl s_client-connectgithub.com:443应该显示github服务器的证书。如果您无法在该级别连接,那么毫无疑问这是一个网络问题。