10

看似随机,我们的本地 repos 无法再从我们的 Bonobo 服务器获取。当我们尝试在本地获取时,它发生在我们最大的远程仓库(大约 4GB)给不同的人和不同的时间。起初它只是每隔几个月,但现在它的频率越来越高,并且今天同时发生在许多本地回购中。现在我们正在通过移动一个工作.git文件夹来解决它。

它快速打印一些POST git-upload-pack (gzip X to Y bytes),然后挂起半小时到一个小时。

如果我从对象目录中删除一个包文件,它会抱怨丢失的东西然后开始正确获取,但仅用于那个git-upload-pack.

我试过了repackgc各种方法都没有效果。我尝试将服务器和客户端上的 git 从 1.8.4 升级到 1.9。

cloneing 有同样的问题,但升级 Bonobo 解决了这个问题,即使它是相同版本的 git。昨天一个新克隆的 repo 正在工作,但今天它有同样的问题。

有趣的是,我们有很多 dll 和 pdb。它已经使用了一年,是从带有 git-svn 的 SVN 存储库中导入的。

这是痕迹

$ GIT_TRACE=1 git fetch -v
trace: built-in: git 'fetch' '-v'
trace: run_command: 'git-remote-https' 'origin' 'https://xxx
/yyy.git'
trace: run_command: '"C:/Program Files (x86)/GitExtensions/GitCredentialWinStore
/git-credential-winstore.exe" get'
trace: run_command: '"C:/Program Files (x86)/GitExtensions/GitCredentialWinStore
/git-credential-winstore.exe" store'
trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all' '--quiet'
trace: run_command: 'fetch-pack' '--stateless-rpc' '--stdin' '--lock-pack' '--in
clude-tag' '--thin' 'https://xxx/yyy.git/'
trace: built-in: git 'fetch-pack' '--stateless-rpc' '--stdin' '--lock-pack' '--i
nclude-tag' '--thin' 'https://xxx/yyy.git/'
POST git-upload-pack (gzip 2057 to 1096 bytes)
POST git-upload-pack (gzip 2307 to 1222 bytes)
POST git-upload-pack (gzip 3657 to 1914 bytes)
POST git-upload-pack (gzip 6207 to 3192 bytes)
POST git-upload-pack (gzip 12607 to 6374 bytes)

谷歌搜索显示有些人有这个问题,但没有提到(升级倭黑猩猩等)。

4

3 回答 3

8

git 内部使用 curl,因此使用以下配置设置进行调试:

客户端配置

git config --global http.postBuffer 524288000

客户端环境变量

  • GIT_CURL_VERBOSE=1
  • GIT_HTTP_MAX_REQUESTS=16

服务器配置

  • 增加<requestLimits maxAllowedContentLength=[所需大小] >; web.config大小可以是 1073741824
  • 增加<httpRuntime maxRequestLength=[所需大小] >; web.config尝试值 1024000

此外,以下设置可以自动中止慢速传输:

  • GIT_HTTP_LOW_SPEED_TIME
  • GIT_HTTP_LOW_SPEED_LIMIT

如果 HTTP 传输速度低于 GIT_HTTP_LOW_SPEED_LIMIT 的时间长于 GIT_HTTP_LOW_SPEED_TIME,则传输中止。

参考

于 2017-07-28T08:46:40.820 回答
2

我知道这是一个老问题,但我有一个类似的问题,想分享我的经验。我从来没有真正找到原因,但是在更新到最新的 Git(在服务器上 - 即使 bonobo 附带了自己的版本)、检查权限、git fsck升级 Bonobo 之类的命令,甚至在代码中添加了大量额外的日志记录之后,这是为我做的。

Bonobo 在服务器上创建了一个裸仓库,我可以成功地直接从服务器上克隆它,并且可以获取/拉取等。这促使我尝试复制仓库并用副本替换它。因此,在临时文件夹中:

git clone [path_to_Bonobo repo] temp_repo

然后将 Bonobo git repo 移出存储库根文件夹,进入 Bonobo 根文件夹并:

git clone --mirror [path_to_temp_repo] [original_repo_name]

我还做了一个:

git fetch --prune

git push --prune [path_to_temp_repo] +refs/remotes/origin/*:refs/heads/* +refs/tags/*:refs/tags/*

说完,倭黑猩猩高兴地又开始抓拉推。

于 2019-07-04T21:12:15.140 回答
0

就我而言,我在git-upload-packbitbucket 服务器上得到了这个挂起。原来问题是:我的 ssh 密钥上有一个密码短语,由于某种原因未知,似乎没有提示要求它。

删除密码短语解决了这个问题。

我只是发布这个以防它帮助另一个灵魂。

于 2020-04-07T21:53:34.197 回答