如何解决从Bonobo Git Server导入Git仓库至VSTS的失败问题
解决Bonobo Git Server导入VSTS失败的问题
我之前帮团队处理过类似的Bonobo到VSTS Git仓库导入故障,给你几个针对性的排查和解决步骤,应该能帮你搞定:
检查Bonobo服务器的公网可访问性与凭证格式
VSTS的导入服务是从公网发起请求的,所以首先要确认你的Azure虚拟机已经开放了Git服务对应的端口(默认是9418,如果Bonobo用了自定义端口要对应开放),同时Azure VM的公网IP能正常访问。另外,带凭证的URL格式要正确,应该是:https://[管理员用户名]:[密码]@[Bonobo服务器公网地址]/[仓库路径].git注意如果密码里包含@、&这类特殊字符,一定要做URL编码(比如@换成%40),否则会导致凭证解析失败。
用Git镜像克隆+推送的方式绕开VSTS导入服务
如果直接导入始终失败,这是最稳妥的替代方案,步骤如下:- 在本地机器上克隆Bonobo仓库的镜像版本:
git clone --mirror http://你的Bonobo服务器地址/目标仓库.git - 进入克隆后的镜像仓库目录:
cd 目标仓库.git - 添加VSTS仓库作为远程地址:
git remote add vsts https://你的VSTS账户名.visualstudio.com/你的项目名/_git/目标仓库名 - 推送所有分支到VSTS:
git push vsts --all - 推送所有标签到VSTS(如果有标签的话):
git push vsts --tags
这种方式完全用Git原生命令操作,避开了VSTS导入服务的兼容性问题,我之前遇到的大部分导入失败案例都是用这个方法解决的。
- 在本地机器上克隆Bonobo仓库的镜像版本:
检查Bonobo仓库的完整性
有时候Bonobo仓库本身可能存在损坏(比如索引文件错误、对象缺失),导致导入失败。你可以登录到Azure虚拟机上,进入Bonobo仓库的存储目录,运行以下命令检查并修复:git fsck --full如果发现有损坏,根据提示修复后再尝试导入或镜像推送。
尝试VSTS导入工具的高级选项
如果你还是想用VSTS网页端的导入功能,看看是否有高级选项可以调整:比如如果仓库使用了Git LFS,可以尝试跳过LFS文件导入;或者调整导入超时时间,针对大仓库延长超时阈值,避免因超时导致失败。
内容的提问来源于stack exchange,提问作者Martin Braun




