【发布时间】:2013-06-08 23:27:56
【问题描述】:
我已经阅读了其他几个“git hangs on clone”的问题,但没有一个符合我的环境和详细信息。我正在使用在 cygwin 下构建的 git(msys git 不是一个选项)通过 SSH 从 Linux 主机克隆 repo。
git clone user@host:repo
我已经在其他平台上针对同一主机进行了测试,它工作正常,但在这台 Windows 机器上,克隆无限期挂起。我设置了GIT_TRACE=1,看起来问题出在这个命令上:
'ssh' 'user@host' 'git-upload-pack '\''repo'\'''
我的 SSH 密钥设置正确:ssh user@host 工作正常。当我运行命令时,我得到一堆这样结束的输出:
...
003dbbd3db63763922ad75bbeefa3811dce001576851 refs/tags/start
0000
然后它挂了 20 多分钟,这是我在杀死它之前等待的最长时间。
服务器有 Git 1.7.11.7 和 OpenSSH 5.9p1,而客户端有 Git 1.7.9 和 OpenSSH 6.1p1。
这应该是 git-upload-pack 输出的结尾吗?这是 Git 中的错误还是我的配置中的错误?
【问题讨论】:
-
您是否尝试将克隆(从 linux/mac)复制到 windows pc 并“使用”它?可能是 Windows 的一些 git 问题(不区分大小写、字符编码……),这可能有助于追踪它。
-
这应该来自
git-upload-pack。它正在等待您(嗯,您的 git 客户端)在您提出要求时进行协商,告诉它您想要和拥有什么。您真的不能使用任何其他 git 客户端进行故障排除吗? -
@EdwardThomson 我不再可以访问那个环境,但是不,我没有使用任何其他 git 客户端的选项。服务器和客户端都是从源代码编译的,因此除了特定于平台的代码和依赖项中引入的行为之外,应该没有任何行为差异。
-
请注意,我自己运行命令的测试不一定有效。实际客户端可能出于完全不同的原因停止执行该命令。我只是提供了该信息以防万一。
-
在客户端使用linux时,可以使用
strace来查找是哪个内核调用了客户端问题。这可以更详细地了解哪个部分失败了。