SVN 项目迁移至 GitLab -- Subgit

要将公司的老项目从SVN迁移到GitLab上,简单看了3种方法,1.Subgit,2. Git 命令,3. SvnGit

由于要将SVN 的 Commit Log 也要带Git,所以选用 Subgit,简单又省事

以下是迁移过程

迁移工作是在Windows10 中进行

工具:

  • IDEA 2021.3.3 Community
  • JDK 11
  • Subgit 3.3.11
  • SVN 1.14
  • Git 2.3

Subgit下载地址:

https://subgit.com/download

https://subgit.com/files/subgit-3.3.11.zip

Subgit 官方指南:

https://subgit.com/documentation/
https://subgit.com/documentation/import-book.html
https://subgit.com/documentation/gitlab.html

迁移步骤:

步骤1

在GitLab中创建要迁移的项目,并取消覆盖保护

Git Lab中选择项目,选择菜单 Settings -> Repository

进入Repository Settings 页面,打开 Protected branches 项, 点击 Unprotect 按钮

步骤2

查看SVN中的目录结构,如果你的SVN目录结构是标准的 branches, tags, trunk, 那么可以直接import,可用以下命令

subgit import --svn-url http://localhost/my_project svn2git_project

由于本文的SVN目录结构如下,所以需要修改 import 配置

https://subgit.com/documentation/branches-mapping.html#multiple_projects

/repository
    /trunk
        /project_1
        /project_2
        …
        /project_N
    /branches
        /branch_1
            /project_1
            /project_2
            …
            /project_N
        …
        /branch_N
            /project_1
            /project_2
            …
            /project_N
    /tags
        /tag_1
            /project_1
            /project_2
            …
            /project_N
        …
        /tag_N
            /project_1
            /project_2
            …
            /project_N

使用 IDEA 的 Terminal ,进入本地 SVN repository 文件夹

输入以下命令

subgit configure http://localhost/my_project svn2git_project

注:svn2git_project 是本地SVN repository 文件夹名称

执行成功会有以下输出

步骤3

进入 svn2git_project\subgit 文件夹,修改 passwd, config 文件

1.修改passwd 文件

打开passwd文件并清空文件原本内容(passwd文件中原来只有说明和例子),写入SVN的用户名与用户密码

格式:名称 密码 (名称、密码中间有个空格)

例如:zhangsan 1234abcd

2. 修改config 文件

替换掉 [SVN] 部分的以下配置

替换为

步骤4

subgit import svn2git_project

如果配置无误,会看到 import 进度

步骤5

完成 import 后,进入svn2git_project 文件夹,会看到多了两个文件夹 db 和 svn

进入svn文件夹,检查 branches, tags, trunk 三个文件夹中的结构是否与配置的一致

如果不一致,可删除这db,svn 两个文件夹,并从再从 步骤3 开始执行

步骤6

如果 branches, tags, trunk 文件夹中的结构符合要求,就可将 mirror 推上Git

进入 svn2git_project 文件夹并执行命令

git push --mirror http://0.0.0.0/projects/my_project.git

以上命令执行完毕后可到 GitLab上检查是否已经成功迁移

迁移中可能遇到的两个问题

1. 执行 subgit import 命令失败,提示 [remote rejected]

检查 config 文件[svn] 部分的配置 trunk 是否与 GitLab上的 branche 名一致

trunk = trunk/my_project:refs/heads/main

有的 GitLab 主branche 可能还是用 master

2. 执行 git push --mirror 命令失败

检查GitLab的项目,是否已经取消保护,参考步骤1

  • 18
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值