赞
踩
要将公司的老项目从SVN迁移到GitLab上,简单看了3种方法,1.Subgit,2. Git 命令,3. SvnGit
由于要将SVN 的 Commit Log 也要带Git,所以选用 Subgit,简单又省事
以下是迁移过程
迁移工作是在Windows10 中进行
工具:
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。