如果我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
答案 0 :(得分:1)
五年后,Git 2.29(2020年第四季度)以及使用更多的缓冲I / O(我们曾经调用许多小write(2))的情况可能会有所改善。
请参见commit a698d67的commit 6af3b00,commit 24b75fa,René 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的代码。请务必立即处理错误,以获取正确的错误代码,并在关闭流之前显式刷新缓冲区,以捕获这些最后字节的所有写错误。