You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 15:45:46