如何用Subgit迁移Svn新版本至已有GitLab项目且保留commit hash?
可以用Subgit实现增量迁移,具体步骤如下:
克隆现有GitLab上的Project A仓库到本地:
git clone git@your-gitlab-domain:your-group/project-a.git cd project-a关联原SVN仓库(如果之前迁移时的本地仓库还保留,可跳过此步,直接用原有
.subgit配置):subgit configure --svn-url <你的SVN仓库完整URL> .生成
.subgit目录后,确保其中的authors.txt和第一次迁移时完全一致——这是保证原有commit hash不变的关键,否则会触发hash变更,影响依赖的submodule。执行增量导入,指定上次迁移截止的SVN版本号(比如上次迁到了
r1234,就从1235开始导入):subgit import --minimal-revision 1235 .这个命令会把SVN中从指定版本到最新的变更同步到本地Git仓库,只会新增后续commit,完全保留原有提交的hash。
验证本地提交历史无误后,推送到GitLab:
git push origin main # 替换成你的主分支名称,比如master
关键注意事项
- 绝对不能修改
authors.txt的映射规则,否则会导致原有commit的hash重新计算,触发submodule依赖问题。 - 必须基于已有的GitLab仓库操作,不能新建仓库重新迁移,否则会生成全新的commit hash。
内容的提问来源于stack exchange,提问作者yyf91699
相关产品推荐
相关产品推荐

