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
    评论
svn数据迁移GitLab的过程可以分为以下几个步骤: 1. 首先,需要确认你的GitLab版本。你可以通过运行命令`cat /opt/gitlab/embedded/service/gitlab-rails/VERSION`来查看GitLab的版本。 2. 然后,创建一个备份目录以存储GitLab的数据。你可以使用如下命令创建备份目录并备份原有的数据: ``` cp -r /opt/gitlab/embedded/service/gitlab-rails{,.bak} ``` 此命令会在`/opt/gitlab/embedded/service/gitlab-rails`目录下创建一个备份目录`.bak`,并将原有的数据复制到备份目录中。 3. 接下来,将从SVN迁移的代码复制到GitLab的存储目录下。假设你已经将SVN的代码迁移到了`gitlab-11-2-stable-zh`目录中,你可以使用如下命令将其复制到GitLab的存储目录: ``` /bin/cp -rf gitlab-11-2-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/ ``` 此命令会将`gitlab-11-2-stable-zh`目录下的所有文件和文件夹复制到GitLab的存储目录中。 4. 最后,需要更新GitLab的配置文件以指定备份路径。你可以通过运行如下命令查看当前配置文件中的备份路径: ``` cat -n /etc/gitlab/gitlab.rb | sed -n '299p' ``` 此命令会显示配置文件中第299行的内容,其中包含了备份路径的设置。 请确保将其中的`/gitlab-backup`替换为你自己的备份路径,并保存配置文件。 完成以上步骤后,你的SVN数据就会被成功迁移GitLab。希望对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值