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

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

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

迁移应用场景

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)

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

相关推荐

miui官网开发版下载(小米miui开发版下载)

你好,miui12开发版下载方式如下1打开浏览器,登录小米Rom官网,2进去之后搜索自己的手机型号,3点击进入就可以看到所有发布过的miui版本4点击想要的12版本下载即可。现在的MIUI开发版需要申...

惠普台式机进入bios设置u盘启动
惠普台式机进入bios设置u盘启动

设置u盘启动的步骤如下:1、首先,将u盘插入hp台式机的USB接口处。2、开机快速断续的按F10键进入BIOS设置界面。3、将光标移到【BootDevicePriority】选项按回车键进入。4、选择【HDDGroupBootPr...

2026-01-15 00:37 liuian

云手机免费版无限挂机怎么用

1、登陆后,如果需要挂网页游戏,点击服务器的左下角,找到IE浏览器,然后打开网页游戏,登陆你的账号就行了,不要关闭IE浏览器,你的网页游戏就会24小时挂在云服务器上面。2、如果想要挂机,打开IE浏览器...

上海最近3天疫情情况(上海近几天的新冠疫情情况)

根据国家卫健委的每天疫情通报及上海市的疫情通报,上海没有一个区属中高风险地区,所以从上海任何一个区返乡都不需要隔离14天。上海这么大的城市,每天人来人往的Ill流不息,能继续做到区级地区没有中高级风险...

windows media player怎么下载

方法如下:在安装WMP11时只是把C:\DocumentsandSettings\AllUsers\ApplicationData\WindowsGenuineAdvantage\data...

during(during用法)

during用来表示一段时间,其意义大致相当于in的用法。一般来说,凡是能用in的地方,也可以用during.例如:Hecametoseemeduringmyabsence.Don’t...

深圳电脑城在哪里(深圳电脑卖场)

龙岗:世纪电脑城,平湖电脑城,京科电脑城坪山新区:坪山电脑城龙华:观澜电脑城,大浪电脑城,宏华电脑城,龙华电子城宝安区:赛格电子城,宝安电子城,丰明电脑城,沙井电子城龙岗中心区那边有两个电子城,...

电脑上怎么清理c盘垃圾(电脑里怎么清理c盘的东西)

C:\ProgramFiles\WindowsApps(隐藏文件夹)。打开“此电脑”,点击“查看”,勾选“隐藏的项目”,即可查看隐藏文件。为保证文件安全,此文件夹需要获取权限才能操作。获取方式...

手机哪个杀毒软件最好用

杀毒软件我有用过好几种用过之觉得体验感及安全性来说人喜欢推荐腾讯手机管家功能比较全面监控流量、查杀病毒、保护隐私等等界面也比较漂亮重点还要定期扫描同时也要轻易点开别人发链接之类软件有提示危险绝对要点开...

笔记本电脑怎样截图(苹果笔记本电脑怎样截图)
笔记本电脑怎样截图(苹果笔记本电脑怎样截图)

方法/步骤1第一个办法自然是我们最常见最简单的,使用“PrintScreen”键截图了。点击“PrintScreen”键,我们就可以直接截取全部屏幕,找个对话框或者文字区域粘贴就好了。我截的图是这样的2Windows系统都自带有截图工具,我...

2026-01-14 22:37 liuian

vaio笔记本u盘启动(hipaa笔记本u盘启动)

可能是u盘启动快捷键没有使用正确。因为笔记本型号不同,所以BIOS会有所不同,并且进入bios的启动快捷键也会不同。而索尼笔记本开机需要按F2键进入bios设置中。  2、在bios中没有正确设置u盘...

win7补丁更新在哪(win7系统补丁更新到几月)

答,方法如下1、点击开始菜单。在开始菜单键上面有三个图标,分别是;用户。设置。电源。点击其中的设置按钮。  2、接着,就打开了Windows设置窗口。点击最后一个“更新和安全”。  3、选择左侧列表中...

电脑主机怎么看配置高低(电脑主机配置高低判断)
  • 电脑主机怎么看配置高低(电脑主机配置高低判断)
  • 电脑主机怎么看配置高低(电脑主机配置高低判断)
  • 电脑主机怎么看配置高低(电脑主机配置高低判断)
  • 电脑主机怎么看配置高低(电脑主机配置高低判断)
大白菜启动盘下载(大白菜启动盘官网)

要在大白菜U盘上下载系统并创建启动盘,首先需要确保U盘的容量足够大以容纳整个系统镜像文件。然后,您可以从官方网站或可信的下载源获取所需的系统镜像文件,并使用专业的启动盘制作工具,如Rufus或UNet...

win10笔记本强制关机(windows10笔记本强制关机)

笔记本强制关机方法:1、按笔记本的电源键不松手,即可实现强制关机。2、一般涉及强制关机主要有死机、蓝屏、电脑运行程序无响应。强制关机后,笔记本电脑可能会出现非常卡的情况。这主要是因为在强制关机的过程中...