使用SubGit迁移SVN源码异常:仅生成元数据无实际代码
问题分析与解决思路
你遇到的情况其实是SubGit import 操作后的常见现象——Git仓库的历史和内容已经成功导入到.git目录的对象库中,但工作区没有自动检出代码。下面一步步帮你排查和解决:
1. 先确认Git仓库的内容是否真的存在
首先进入你的目标Git目录,执行以下命令查看仓库的分支和提交历史:
cd C:\Sources\Git\TestMigrationNMPC git branch -a # 查看所有本地/远程分支 git log --oneline # 查看提交历史
如果能看到对应SVN trunk的分支(默认是master或main,取决于SubGit配置),并且有连续的提交记录,说明迁移确实成功了,只是工作区没检出代码。
2. 检出主分支代码
执行Git检出命令,把对应分支的代码拉到工作区:
git checkout master # 如果默认分支是main就替换成git checkout main
执行完这条命令后,你应该就能在目标目录看到实际的源码文件了。
3. 排查分支映射异常的情况
如果执行git branch -a看不到主干分支,那可能是SVN与Git的分支映射出了问题:
- 打开SubGit的配置文件
C:\Sources\Git\TestMigrationNMPC\subgit\config,查看[svn]段的trunk配置项,确认是否指向了正确的SVN trunk路径:
如果映射路径错误,会导致迁移后的分支异常。修改配置后,可以先执行[svn] trunk = trunk:refs/heads/mastersubgit clean "C:\Sources\Git\TestMigrationNMPC"清理残留,再重新执行configure和import流程。
4. 补充:区分subgit import和subgit install
你当前使用的import是一次性迁移SVN历史到Git的命令,完成后不会自动维护工作区同步;而install命令是用来建立SVN与Git双向同步的,执行install后会自动检出代码到工作区。如果后续需要持续同步SVN和Git的内容,建议改用install流程:
# 先清理之前的import残留(可选,若之前的迁移有问题时执行) subgit clean "C:\Sources\Git\TestMigrationNMPC" # 重新配置仓库 subgit configure http://address.global.ds.mycompany.com/svn/onramp/nmpc_framework C:/Sources/Git/TestMigrationNMPC # 配置好passwd和authors.txt后执行install subgit install "C:\Sources\Git\TestMigrationNMPC"
总结
最可能的原因就是import完成后没有手动检出分支,先执行git checkout master(或对应分支)试试,大概率就能看到源码了。如果分支不存在再去检查分支映射配置。
内容的提问来源于stack exchange,提问作者VarunB
相关产品推荐
相关产品推荐

