git rev-list无限地挂起

时间:2015-11-13 15:36:01

标签: git ssh

如果我git pull - 它完美无缺。

但是如果之后我尝试使用$ GIT_CURL_VERBOSE=1 GIT_TRACE=1 git pull 10:20:56.507549 git.c:348 trace: built-in: git 'pull' 10:20:56.508283 run-command.c:343 trace: run_command: 'fetch' '--update-head-ok' 10:20:56.508877 exec_cmd.c:128 trace: exec: 'git' 'fetch' '--update-head-ok' 10:20:56.511135 git.c:348 trace: built-in: git 'fetch' '--update-head-ok' 10:20:56.520316 run-command.c:343 trace: run_command: 'ssh' 'git@server' 'git-upload-pack '\''/vol/git/repos/repo.git'\''' 10:20:58.384437 run-command.c:343 trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all' '--quiet' 它会挂起(有时可以正常工作):

git客户端版本:2.6.3

git服务器版本:2.1.4

输出:

crypto-js

1 个答案:

答案 0 :(得分:1)

五年后,Git 2.29(2020年第四季度)以及使用更多的缓冲I / O(我们曾经调用许多小write(2))的情况可能会有所改善。

请参见commit a698d67commit 6af3b00commit 24b75faRené Scharfe (rscharfe)(2020年8月12日)。
(由Junio C Hamano -- gitster --commit d8488b9中合并,2020年8月24日)

upload-pack:使用缓冲的I / O与rev-list对话

帮助者:克里斯·托雷克(Chris Torek)
帮助人:约翰内斯·西维特

类似于f0bca72dc77(“ send-pack:使用缓冲的I / O与打包对象进行通讯”,2016-06-08,列出了Git v2.10.0-rc0-merge batch #3中的代码),大大减少了系统调用次数,并简化了使用stdio的缓冲将对象ID发送到rev-​​list的代码。

请务必立即处理错误,以获取正确的错误代码,并在关闭流之前显式刷新缓冲区,以捕获这些最后字节的所有写错误。