看似随机,我们的本地存储库无法再从 Bonobo 服务器获取。当我们尝试在本地获取数据时,在不同时间向不同的人提供最大的远程存储库(大约 4GB)时,就会发生这种情况。起初只是每隔几个月发生一次,但现在频率越来越高,并且今天在同一时间发生在很多本地仓库上。现在我们通过移动工作的
.git
文件夹来解决这个问题。
它会快速打印一些
POST git-upload-pack (gzip X to Y bytes)
,然后挂起半小时到一个小时。
如果我从对象目录中删除一个包文件,它会抱怨缺少东西,然后开始正确获取,但仅限于此
git-upload-pack
。
我尝试了各种方法
repack
和gc
,但没有效果。我尝试将服务器和客户端上的 git 从 1.8.4 升级到 1.9。
clone
ing 也有同样的问题,但是升级 Bonobo 解决了这个问题,尽管它是相同版本的 git。昨天新克隆的存储库可以正常工作,但今天却出现了同样的问题。
有趣的是我们里面有很多 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)
谷歌搜索显示有些人遇到了这个问题,但没有提到任何内容(升级倭黑猩猩等)。
git 在内部使用curl,因此使用以下配置设置进行调试:
客户端配置:
git config --global http.postBuffer 524288000
客户端环境变量:
服务器配置:
<requestLimits maxAllowedContentLength=
中增加>
[所需尺寸]web.config
;大小可能是 1073741824<httpRuntime maxRequestLength=
中增加>
[所需尺寸]web.config
;尝试值 1024000此外,以下设置可以自动中止慢速传输:
如果 HTTP 传输速度低于 GIT_HTTP_LOW_SPEED_LIMIT 的时间超过 GIT_HTTP_LOW_SPEED_TIME,则传输将中止。
参考文献
我知道这是一个旧问题,但我也遇到了类似的问题,想分享我的经验。我从来没有真正找到原因,但是在更新到最新的 Git(在服务器上 - 尽管 bonobo 附带了自己的版本)之后,检查权限、诸如
git fsck
升级 Bonobo 之类的命令,甚至向代码,这就是为我做的。
Bonobo 在服务器上创建了一个裸存储库,我可以在服务器上直接从它成功克隆,并且可以获取/拉取等。这促使我尝试复制该存储库并将其替换为副本。因此,在临时文件夹中:
git clone [path_to_Bonobo repo] temp_repo
然后将 Bonobo git 存储库移出存储库根文件夹,进入 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/*
此后,Bonobo 高兴地再次开始拉、推。
就我而言,我在 Bitbucket 服务器上遇到了这个问题。结果问题是:我的 ssh 密钥上有一个密码,由于某种未知的原因,没有出现提示要求它。
删除密码解决了问题。
我只是发布此内容,以防它可以帮助另一个灵魂。