git-upload-pack无限期挂起


30

我有以下通话结构:

  1. 詹金斯奔跑fab -Huser@host set_repository_commit_hash:123abc
  2. set_repository_commit_hashgit fetch与运行pty = False
  3. 子进程ssh git@github.com git-upload-pack 'user/repository.git'永远不会完成。

我尝试git fetch在本地克隆中运行,但成功了,但是运行ssh git@github.com git-upload-pack 'user/repository.git'只会返回以下内容并挂起:

00ab84249d3bb20930c185c08848c60b71f7b28990d6 HEADmulti_ack thin-pack side-band side-band-64k ofs-delta shallow no-progress include-tag multi_ack_detailed agent=git/1.8.4
0041cb34b1c8ca75d478df38c794fc15c5f01cc6377e refs/heads/branch_name
004012577068adf47015001bfa0cff9386d6cdf497ce refs/heads/[...]
003f84249d3bb20930c185c08848c60b71f7b28990d6 refs/heads/master
[a couple more lines like the ones above, then:]
0000

这是已知的SSH / Git / Fabric / Jenkins问题吗?

我做到strace了,但是我没有录制会议记录。我相信它被卡在了read

可能相关的链接:

  1. Jenkins问题14752:SCM轮询/并发轮询的最大数量= 1挂起github轮询
  2. 为什么git-upload-pack(在git克隆期间)会挂起?
  3. tortoisegit问题1880:tortoisegit的获取由于运行中/从未退出过的tortoisegitplink而挂起(特别是注释#7
  4. 这个随机的,永无止境的“ git-upload-pack”过程是什么?

1
是否尝试过SO Q&A中的任何建议?还有什么strace -p <pid of hung git daemon>说它正在阻止?
slm

@slm您有什么具体建议吗?
l0b0

1
对我来说,解决的问题是确保Jenkins以具有GIT仓库正确凭据的用户身份运行
MauricioOtta

1
git-upload-pack就是应该做的,AFAICT。它正在等待您说说git fetch-pack协议,并告诉它要发送哪些内容(尝试在本地存储库上运行它,您将获得相同的输出)。
derobert

2
(假设这个问题不是过时的,因为它是从2013年开始的)git clone詹金斯试图获取的主机上是否有全新的(来自github)?我怀疑它不会,并且您可能有路径MTU发现问题,该问题是由防火墙损坏引起的(可能在路径上的任何地方,而不仅仅是您的身边。)
derobert

Answers:


0

正如快速发展的软件所预期的那样,该问题似乎已自行消除。由于我可能已经有好几年没有观察到这个问题了,所以我想对那些修复它并认为这个问题过时的人表示感谢。

如果您在最新的Git版本中遇到此问题,请考虑询问一个单独的问题,因为它可能不是完全相同的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.