gpt4 book ai didi

windows - 为什么 git-upload-pack(在 git clone 期间)会挂起?

转载 作者:IT王子 更新时间:2023-10-29 01:11:30 28 4
gpt4 key购买 nike

我读过其他几个“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 key 设置正确: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 错误还是我的配置错误?

最佳答案

即将发布的 git1.8.5(2013 年第 4 季度)将记录更多智能 http 协议(protocol)。
参见 commit 4c6fffe2ae3642fa4576c704e2eb443de1d0f8a1通过 Shawn O. Pearce .

有了详细的文档,我们的想法是监控在您的 git 客户端和服务器之间完成的 Web 请求,并查看这些请求是否符合下面记录的内容。

这有助于查明服务“挂起”的位置。


文件Documentation/technical/http-protocol.txt坚持:

  • Smart Service git-upload-pack

    • 客户端必须首先使用“$GIT_URL/info/refs?service=git-upload-pack”执行引用发现。

      C: POST $GIT_URL/git-upload-pack HTTP/1.0
      S: 200 OK
      S: Content-Type: application/x-git-upload-pack-result
      S: Cache-Control: no-cache
      S:
      S: ....ACK %s, continue
      S: ....NAK
    • 客户端不得重复使用或重新验证缓存的响应。

    • 服务器必须包含足够的缓存控制 header 以防止缓存响应。
    • 服务器应该支持此处定义的所有功能。
    • 客户端必须在请求正文中发送至少一个“想要”命令。
    • 客户端不得在“want”命令中引用未出现在通过 ref 发现获得的响应中的 id,除非服务器通告功能“allow-tip-sha1-in-want”。
  • "negociation" algorithm

    (c) Send one $GIT_URL/git-upload-pack request:
    C: 0032want <WANT #1>...............................

关于windows - 为什么 git-upload-pack(在 git clone 期间)会挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17072484/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com