遇到一个情况,需要将两个gitlab仓库合并。好在都是使用的ldap账户登陆,用户账户不需要迁移。
实际的使用情况下,需要迁移的主要部分为分组及分组下项目。gitlab的api还是很给力的,能够获取所有这些信息,并利用这些信息进行新建。
获取信息使用GET方法,修改信息使用PUT方法,新建使用POST。
GITLAB_API_URL = "GITLAB_URL/api/v3"
GET_ALL_GROUPS_URL = "/groups"
GET_ALL_MEMBERS_URL = "/groups/%s/members"
GET_ALL_PROJECTS_URL = "/groups/%s"
CREATE_GROUP_URL = "/groups"
ADD_MEMBER_URL = "/groups/%s/members"
使用api的时候需要在header带上管理员token
PRIVATE-TOKEN:xxxxxxxxx
首先通过api迁移分组,分组成员及权限。然后迁移项目。
迁移项目在获取项目url之后,使用命令:
git clone --bare $OLD_URL
cd $workspace
git push --mirror $NEW_URL
即可完成项目迁移
gitlab api 官方文档:https://docs.gitlab.com/ee/api/README.html#gitlab-api