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存放位置