百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

gitlab仓库迁移(组下所有的子组以及项目迁移)

liuian 2025-01-23 18:41 82 浏览

迁移应用场景

1.迁移部分项目到新的仓库地址

2.迁移组以及子组下所有的项目

3.迁移所有gitlab组

要求

1.基本要求

a 新的git地址和老的git地址都有对应的权限token

b 脚本服务器和老的git服务器以及新的git服务器网络通的(ssh方式拉取代码)

c 配置ssh拉取代码(新旧gitlab,可选择https方式)

0.配置ssh方式拉取代码

步骤一:生成SSH密钥

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"   //换成自己的邮箱
  1. 生成成功后,你将在终端或Git Bash中看到一条消息,其中包含公钥的位置,默认为~/.ssh/id_rsa.pub。

步骤二:将SSH公钥添加到GitLab账户

  1. 复制SSH公钥的内容。你可以使用以下命令将其打印到终端或Git Bash中:
  2. cat ~/.ssh/id_rsa.pub



1.获取项目token

配置添加token(有读写api的相关权限)


将token进行记录

2.迁移组

选择要迁移的组


setting----->General---->Advanced------->Export group (导出组文件)


再按创健组的顺序在新的进行导入即可



3.迁移组下所有项目(包括子组下的所有项目)

通过python脚本迁移所有仓库代码

注: 请将对应的token修改,git地址修改

import requests
import os
import subprocess


ACCESS_TOKEN = "*****************"  //迁移token老的git地址token


GITLAB_API_URL = "https://*.*.*.*/api/v4"  //gitlab  api地址

def clone_repo(ssh_url, path):
    if not os.path.exists(path):
        os.makedirs(path)
    print(ssh_url,path)
    subprocess.call(["git", "clone", "--mirror", ssh_url, path])

def push_repo(ssh_url, path):
    new_repo_url = ssh_url.replace("gitlab.fosun.com", "gitlab.assistfc.com")
    os.chdir(path)
    subprocess.call(["git", "remote", "set-url", "--push", "origin", new_repo_url])
    subprocess.call(["git", "push", "--mirror"])
    print("push --mirror new_repo_url %s"%new_repo_url)


def get_subgroups_and_projects(group_id, base_path):
    projects = []
    groups_to_check = [(group_id, base_path)]

    while groups_to_check:
        current_group_id, current_path = groups_to_check.pop(0)

        subgroup_response = requests.get(
            f"{GITLAB_API_URL}/groups/{current_group_id}/subgroups",
            headers={"PRIVATE-TOKEN": ACCESS_TOKEN}
        )
        if subgroup_response.status_code == 200:
            subgroups = subgroup_response.json()
            for subgroup in subgroups:
                subgroup_path = os.path.join(current_path, subgroup['path'])
                groups_to_check.append((subgroup['id'], subgroup_path))

        project_response = requests.get(
            f"{GITLAB_API_URL}/groups/{current_group_id}/projects",
            headers={"PRIVATE-TOKEN": ACCESS_TOKEN}
        )
        if project_response.status_code == 200:
            print("project",project_response)
            for project in project_response.json():
                print("project info",project)
                print("project['path']",project['path'])
                project_path = os.path.join(current_path, project['path'])
                print("project_path",project_path)
                clone_repo(project['ssh_url_to_repo'], project_path)
                push_repo(project['ssh_url_to_repo'], project_path)
                projects.append(project)

    return projects



group_id = ***  //迁移的组id注意修改
base_path = "/tmp/test"   //代码存放目录
projects = get_subgroups_and_projects(group_id, base_path)

执行脚本进行脚本迁移(完成)

相关推荐

深度linux系统好用吗(深度linux操作系统)

要将深度deepin系统换回windows,需要进行以下步骤:1.备份重要数据:在更改操作系统之前,需要备份重要数据,以免数据丢失。2.获取Windows安装介质:需要获取Windows安装介质,可以...

u盘排行榜前十名品牌(u盘排名前十的品牌)

pe系统u盘的十大排行1、闪迪(SanDisk)U盘推荐理由:标准容量,存储空间大,家用办公都适合闪迪(SanDisk)128GBUSB3.0U盘CZ73酷铄SanDisk(闪迪)公司是全球...

一键恢复qq空间十年照片(怎么找回qq空间十年前删除的照片)
  • 一键恢复qq空间十年照片(怎么找回qq空间十年前删除的照片)
  • 一键恢复qq空间十年照片(怎么找回qq空间十年前删除的照片)
  • 一键恢复qq空间十年照片(怎么找回qq空间十年前删除的照片)
  • 一键恢复qq空间十年照片(怎么找回qq空间十年前删除的照片)
u盘坏了怎么简单的维修(u盘坏了 怎么修)

一般是可以修的:具体如下U盘损坏的问题可能是1,U盘接口虚焊,这样的话去修一下就好了,几块钱就搞定(插U盘无反应或者摇动U盘偶尔有反应)。2,你U盘的晶振坏了,这样的话换一个就好了,可以修的,也不贵(...

联想笔记本老款有哪些(联想笔记本老款有哪些系列)

这个是联想c116型号,都是能够让这个联想笔记本有二纳米的工艺,同时能够让它有12GB的运行内存和512GB的机械硬盘,运行起来还是很不错的。1992年10月5日,IBM正式发布三款ThinkPa...

怎么更新n卡驱动(怎么更新n卡驱动器)

若您使用的是NVIDIA显卡,以下是更新显卡驱动的一般步骤:1.打开"NVIDIA控制面板"。您可以通过右键点击桌面空白处,选择"NVIDIA控制面板"来打开。2....

电脑版ie浏览器下载win10(ie10浏览器怎么下载安装到电脑)

安装IE10浏览器需要满足以下要求:1.操作系统需要为Windows7及以上版本。2.已经卸载之前的IE版本(如IE9等)。3.计算机已经安装了SP1(ServicePack1)补丁。如果你的电...

系统管理权限在哪里(系统的权限管理)
  • 系统管理权限在哪里(系统的权限管理)
  • 系统管理权限在哪里(系统的权限管理)
  • 系统管理权限在哪里(系统的权限管理)
  • 系统管理权限在哪里(系统的权限管理)
微软office激活密钥2007(office激活密钥 2007)

您好!建议您可以下载一个激活工具,激活一下就可以了。祝您生活愉快,望采纳!一般不是在文件夹中,甚至干脆没有相应的密钥文件,有的则可能会有个诸如sn.txt这样的文件,里面存放着安装密钥。如果没有,那么...

下载安装百度输入法(百度输入法下载后如何安装)

要将默认输入法调为搜狗输入法,可以按照以下步骤进行操作1.打开电脑的“设置”界面;2.点击“时间和语言”选项;3.在“语言”选项卡中,找到“首选语言”一栏;4.点击“添加语言”按钮,选择“中文...

联想电脑售后电话号码(联想电脑厂家售后电话)

查询方法如下1、打开浏览器输入联想官网网址并转到https://www.lenovo.com.cn/2、点击“服务”在二级菜单点击“服务网点查询”3、选择需要维修的设备选择“联想笔记本”4、此时会显示...

联想电脑蓝牙驱动下载(联想电脑蓝牙驱动下载地址)
联想电脑蓝牙驱动下载(联想电脑蓝牙驱动下载地址)

以下是安装联想笔记本蓝牙驱动的步骤:1.访问联想官方网站,找到支持选项卡,选择你的笔记本型号和操作系统,下载最新版本的蓝牙驱动程序。2.查看下载的文件,将其解压缩。3.双击解压缩后的文件,运行安装程序。4.安装向导会出现,按照提示完...

2026-01-17 22:21 liuian

无线网别人可以用我连接上用不了

1、关机重启下;2、看下该类的WiFi是不是需要账号跟密码,若是,那么可以跟对应的商家或者运营商索要账号或者密码进行登录;3、删除该网络重新进行连接尝试下;4、更换其他的WiFi信号进行登录,不排除说...

我的电脑配置在哪里看(自己的电脑配置在哪里看)

1.电脑的配置可以在电脑的系统信息中查看。2.因为电脑的配置信息包括处理器型号、内存容量、硬盘大小等,这些信息可以通过系统信息来获取。3.步骤如下:点击开始菜单,选择“设置”或者“控制面板”,再...

显卡风扇转速怎么调(显卡风扇转速和温度怎么设置合理)
显卡风扇转速怎么调(显卡风扇转速和温度怎么设置合理)

可以通过以下方法调节显卡风扇的转数:1.使用显卡驱动程序中提供的控制工具,一般可以在“高级设置”或“风扇控制”等菜单中找到,然后调节风扇转速的百分比。2.如果你的电脑主板支持,可以在BIOS设置中找到风扇控制选项,手动调节风扇转速。3....

2026-01-17 21:37 liuian