7

我正在尝试从我们公司的存储库中克隆一个内部存储库,但我不断收到此错误:

error: RPC failed; result=18, HTTP code = 200

它总是仅在存储库完全下载后才会发生(需要一段时间)。

我试过使用 torotiseGit。这是报告:

git.exe clone   --progress -v  "http://path/repository.git" "C:\Users\user\Documents\code\repository"

Cloning into 'C:\Users\user\Documents\code\repository'...
POST git-upload-pack (424 bytes)
remote: Compressing objects: 100% (4895/4895)   
Receiving objects: 100% (6970/6970), 61.89 MiB | 4.82 MiB/s
Resolving deltas: 100% (2610/2610)
Resolving deltas: 100% (2610/2610), done.
remote: Total 6970 (delta 2610), reused 5702 (delta 1672)
error: RPC failed; result=18, HTTP code = 200

git did not exit cleanly (exit code 128)

我已经尝试了几次,从 Linux 机器和 Windows 机器。同样的错误

我该如何进一步调查该错误?我在 Google 上找不到任何有用的信息

编辑:我检查了 Git 服务器上的 Apache 日志 - 每个克隆都有一个 GET 和一个 POST(结果为 200)。POST 有点大(60MB) - 所以我尝试将 postBuffer 增加到 500MB,但仍然出现错误

这真的是一个 git 错误吗?

我希望它提供更多信息错误...

4

2 回答 2

14

错误:RPC失败;result=18, HTTP code = 200是 libcurl 错误。

http://curl.haxx.se/libcurl/c/libcurl-errors.html我们可以看到这是:

CURLE_PARTIAL_FILE (18)

文件传输比预期短或大。当服务器首先报告预期的传输大小,然后交付与先前给定大小不匹配的数据时,就会发生这种情况。

您可以在运行诸如 clone 之类的命令之前设置 GIT_CURL_VERBOSE=1 以了解 libcurl 是如何失败的。这可以通过以下方式在 bash 中完成:

GIT_CURL_VERBOSE=1 git clone   --progress -v  ...

但是,鉴于上述错误,您应该尝试调整http.postBuffer。尝试:

git config --global http.postBuffer 524288000

从这里https://www.kernel.org/pub/software/scm/git/docs/git-config.html

于 2013-07-31T22:12:55.950 回答
3

在通过 http(不是 https)使用 git 远程服务器时,我在 Windows 机器上遇到了同样的问题(无法拉取或克隆远程 repo) - 我发现了这个问题的解决方案:在台式机上(发生错误)原因是防病毒软件(在我的情况下是卡巴斯基安全软件 2013)所以我将以下 git 组件放入例外:

例外规则:

  • C:\Program 文件 (x86)\Git\bin\git.exe | 全部
  • C:\Program Files (x86)\Git\bin\curl.exe |全部
  • C:\Program Files (x86)\Git* |全部
  • C:\Program Files (x86)\Git\git-cheetah* |全部

值得信赖的软件:

  • C:\Program 文件 (x86)\Git\bin\git.exe
  • C:\Program 文件 (x86)\Git\bin\curl.exe
  • C:\Program 文件 (x86)\Git\bin\sh.exe
  • c:\程序文件 (x86)\git\libexec\git-core\git-remote-http.exe
  • c:\程序文件 (x86)\git\libexec\git-core\git-upload-pack.exe

并勾选所有选项以完全不中断它们(不跟踪工作流和网络活动) - 之后问题就消失了

于 2013-04-05T06:41:27.547 回答