Git仓库迁移
前言
- 前面我讲了GitLab搭建与使用(SSH和Docker)两种方式,那么就会延伸出来一个情况:
Git仓库迁移- 虽然这种情况很少发生,但是我自己公司近期要把 阿里云迁移到华为云,那么放在上面的
Git仓库也要全量迁移- 下面我就写了一个脚本演示:从
Gitee迁移到GitLab上- 官网地址:
Gitee官网:Gitee.comGitLab官网:极狐GitLab- 对应
API官网地址:
Gitee API官网:Gitee API 文档GitLab API官网:REST API 资源 | 极狐GitLab
功能讲解
- 脚本支持两种迁移方式
- 只迁移代码(
RepositoryMigrateMain)
- 优点:可以指定迁移的仓库
- 缺点:前提条件:新仓库的群组和仓库要提前按照源仓库名称以及结构创建好
- 自动迁移群组、仓库、代码(
AutoAllMigrateMain)
- 优点:无需手动在目标仓库创建群组,仓库
- 缺点:需要了解源仓库、目标仓库部分
API,并且要微调代码(具体逻辑步骤不用改,仅API部分信息需要修改)。需要微调的地方已用IDEA的TODO待办列好了
准备项
- 版本:
JDK版本>jdk1.8.0_162,否则请求https会报错:Remote host closed connection during handshake- 在目标仓库、源仓库创建个人令牌,供
API使用。一般都在设置->xx令牌中- 了解源仓库、目标仓库部分
API
- 源仓库:获取当前用户所有组、根据组获取项目
- 目标仓库:创建组、创建组中项目
- 拉取代码到本地
git clone https://gitee.com/tianchencheng/git_migration_script.git
修改部分
需要修改部分都已用
IDEA工具的TODO功能列出来了
两种方案分别要修改的地方
- 只迁移代码(
RepositoryMigrateMain)
CommonConstants:记录所需基本信息,比如:源仓库/目标仓库(域名、账号、密码)等信息repositories.txt:迁移的仓库全名称**(组名/仓库名)**- 自动迁移群组、仓库、代码(
AutoAllMigrateMain)
CommonConstants:记录所需基本信息,比如:源仓库/目标仓库(域名、账号、密码、API地址)等信息entity/*:这个目录用处如下
SourceGroupResp:源仓库 组 响应参数实体类SourceRepositoryResp:源仓库 仓库 响应参数实体类TargetGroupReq:源仓库 组 请求参数实体类TargetGroupResp:源仓库 组 响应参数实体类TargetRepositoryReq:源仓库 仓库 请求参数实体类TargetRepositoryResp:源仓库 仓库 响应参数实体类AutoAllMigrateMain:启动类,修改所有请求API参数以及token存放位置
演示
1、只迁移代码(RepositoryMigrateMain)

2、自动迁移群组、仓库、代码(AutoAllMigrateMain)


