无法通过ssh推送到远程git仓库,卡在“写入对象:11%”

时间:2012-05-24 15:29:27

标签: git push hang

我遇到了一个问题,在“编写对象”时尝试执行git push挂起。这不是我在其他地方看到过的Windows和git-daemon的常见场景。这是Linux到Linux,使用ssh。在客户端和服务器上,git版本是1.7.8.6。

我尝试过以下操作:

  • 创建一个本地空仓库并推送到那个 - 工作正常
  • 从本地回购拉到当地回购 - 工作正常
  • 将远程仓库克隆到本地计算机 - 工作正常
  • 服务器和客户端回购站上的
  • git fsckgit gc
  • 推送到预先存在的远程仓库 - 以11%
  • 挂起写入对象
  • 创建空的远程仓库并推送到 - 以2%
  • 挂起写入对象

我可以设置一个env变量来使git生成调试消息。没有什么有用的。

我已经和IRC就这个问题进行了长时间的讨论,我试过谷歌搜索它。我们无处可去。这里的任何人都可以帮我弄清楚出了什么问题吗?

谢谢!

更新:根据某人的建议,我做了一个strace -F,它被卡在子进程中的select()上。我提供了整个跟踪,但stackexchange无法上传。无论如何,这是相关部分:

[pid 14414] getsockopt(3, SOL_SOCKET, SO_RCVBUF, [87872], [4]) = 0^M
[pid 14414] select(7, [3 4], [3], NULL, NULL) = 2 (in [4], out [3])^M
[pid 14414] read(4,  <unfinished ...>^M
[pid 14433] <... write resumed> )       = 8192^M
[pid 14433] write(1, "\262\36\237\265\234\n\332W\26\271.\250\271W\34\250N\34*\341\247R\21\177\\Dq\23\27\211\270\25"..., 8192) = 8192^M
[pid 14433] write(1, "Y\343}z\367\31y\321)\254\236na\274\347*\253\247\264d\25\213\364\243\331\242\236\3222U3\246"..., 8192 <unfinished ...>^M
[pid 14414] <... read resumed> "t\277\177\276\361\377\327U\361Re\f\347\300\27\3\255}E\363\2277\312p\356F\335U\345\336\250\273"..., 16384) = 16384^M
[pid 14414] write(3, "\210y\r\202\303`\222m\216\177x \354\216Y\322n\232l\273\237\214\352\32\r\261r\311\347\356\236\26"..., 16432) = 16432^M
[pid 14414] getsockopt(3, SOL_SOCKET, SO_RCVBUF, [87872], [4]) = 0^M
[pid 14414] select(7, [3], [3], NULL, NULL) = 1 (out [3])^M
[pid 14414] write(3, "\v\267\355\33\257\332\330\326\233\260;\223\212z\333\213\21'1\20\7\366\"f\253\373\0059\24\206C4"..., 5504) = 5504^M
[pid 14414] getsockopt(3, SOL_SOCKET, SO_RCVBUF, [87872], [4]) = 0^M
[pid 14414] select(7, [3], [], NULL, NULL <unfinished ...>^M
[pid 14433] <... write resumed> )       = ? ERESTARTSYS (To be restarted if SA_RESTART is set)^M
[pid 14433] --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL, si_value={int=1, ptr=0x1}} ---^M
[pid 14433] rt_sigreturn()              = 1^M
[pid 14433] write(1, "Y\343}z\367\31y\321)\254\236na\274\347*\253\247\264d\25\213\364\243\331\242\236\3222U3\246"..., 8192) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)^M
[pid 14433] --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL, si_value={int=1, ptr=0x1}} ---^M
[pid 14433] rt_sigreturn()              = 1^M
[pid 14433] write(1, "Y\343}z\367\31y\321)\254\236na\274\347*\253\247\264d\25\213\364\243\331\242\236\3222U3\246"..., 8192) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)^M
[pid 14433] --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL, si_value={int=1, ptr=0x1}} ---^M
[pid 14433] rt_sigreturn()              = 1^M
[pid 14433] write(1, "Y\343}z\367\31y\321)\254\236na\274\347*\253\247\264d\25\213\364\243\331\242\236\3222U3\246"..., 8192) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)^M
[pid 14433] --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL, si_value={int=1, ptr=0x1}} ---^M
[pid 14433] rt_sigreturn()              = 1^M

2 个答案:

答案 0 :(得分:7)

问题是ssh中的一个错误。最近的一个版本破坏了一些东西,它在大型转移期间停止了。有一种解决方法。

修复是在sshd_config中设置“TcpRcvBufPoll no”。

http://forums.gentoo.org/viewtopic-t-925044-start-0-postdays-0-postorder-asc-highlight-.html

http://forums.gentoo.org/viewtopic-p-7036250.html

答案 1 :(得分:0)

服务器上有什么问题吗?我的第一个猜测是空间问题。

之后,我会检查inodes(df -i)。