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

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

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

迁移应用场景

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)

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

相关推荐

设置程序开机启动(设置程序开机启动并最小化)

  让计算机开机时自动运行某个程序方法:  方法一:  右击任务栏空白处-属性-自定义-勾选“启用拖放”;  左键拖动程序执行文件(.exe,.bat...)的快捷方式,到左下角的开始,不要松鼠标;...

手机上能用的ps软件(手机上使用的ps软件)

可以使用。1、首先准备智能手机一个,手机photoshop软件一个。2、打开PS,右下角是PS最强大的功能,图层。这里可以随意的添加图层和合并图层。隐藏图层等。3、和电脑一样,有图片不透明度和图层混合...

解决方案经理(解决方案经理的职责和工作内容)

一般都会问到如下几方面的问题:1、生产周期计划制定。2、生产周期安排。3、人员合理安排和管控。4、安全生产监督。5、部门与部门之间的相互协调。6、报表的审批。7、应急事件的处理效率。以上只是罗列部分,...

固态硬盘怎么装win7系统教程

你好,要在笔记本新固态硬盘上安装Windows7系统,您可以按照以下步骤进行操作:1.准备一个可启动的Windows7安装U盘或光盘,并将其插入笔记本电脑。2.打开笔记本电脑,按下电源按钮并立...

电脑重置62%不动了(电脑重置62%不动了能不能点取消)

电脑在恢复出厂设置时卡在62%的原因有以下两点第一、因为硬盘过热导致的这种现象,通过给硬盘降温就可以解决这个问题。第二、因为内存导致的这种现象,如果是内存导致的这种现象,你直接换一个内存,然后重新安装...

kms安装激活教程(如何安装kms激活软件)

kms激活win10不是激活永久。你可以查看一直:1、同时按win+R键打开“运行”,输入slmgr.vbs-xpr回车。2、同时按win+R键打开“运行”,输入slmgr.vbs-dlv回...

搜狗输入法手机(搜狗输入法手机和电脑账户通用吗)
  • 搜狗输入法手机(搜狗输入法手机和电脑账户通用吗)
  • 搜狗输入法手机(搜狗输入法手机和电脑账户通用吗)
  • 搜狗输入法手机(搜狗输入法手机和电脑账户通用吗)
  • 搜狗输入法手机(搜狗输入法手机和电脑账户通用吗)
机械硬盘与固态硬盘哪个好(机械硬盘和固态差距大吗)

机械硬盘和固态硬盘各有优缺点,具体取决于你的需求和预算。机械硬盘是传统的存储设备,使用旋转的磁盘和机械臂读取和写入数据。它们的优点是价格相对较低,存储容量较大,适合存储大量的数据。但是,机械硬盘的读写...

360防蹭网软件(360防蹭网软件下载)

无线防蹭网在:功能大全——网络优化——无线防蹭网(倒数第二个)右键360软件球的图标之后,弹出下拉的菜单中,进行选择“看网速。”进入到看网速的界面中,可以看到各个菜单中的“防蹭网”的选项。进入到防蹭网...

查找隐藏的文件夹(查找隐藏的文件夹在哪里)

1.用Windows电脑,打开文件夹,点击顶部目录的“查看”。2.弹出查看的所有目录,勾选最右边的“隐藏的项目”。3.勾选成功后,文件夹就会显示出隐藏的文件夹了。查找隐藏文件夹的方式如下:1、点...

蓝屏代码0x000000be(蓝屏代码0x0000003b)

按开机按钮,关闭操作系统,再开机时,按F8键进入选择菜单,进入安全模式,也许会有改善,再重启电脑,继续按F8键,此时可以选择使用最后一次正确的配置启动Windows选项,解决诸如新添加的驱动程序与硬件...

开始菜单在哪里(开始菜单在哪里电脑)

1、要显示出Excel表中的开始选项卡,需要在主菜单栏中点击“文件”,然后进入“选项”页面。2、在“选项”页面中选择“自定义功能区”,接着在右侧的“主选项卡”列表中勾选“开始”,然后点击“确定”按钮...

更新显卡驱动后黑屏(更新显卡驱动后黑屏重启)

很明显是显卡没有正常工作,驱动程序不正确,系统没有成功启动,可以尝试启动后按f8键,选择带网络连接的安全模式,进入后启动360安全卫士的软件管家,下载驱动大师,启动系统驱动检测,然后根据提示安装驱动就...

无限内存(无限内存购买的恐怖躲猫猫三旧版游戏)

在计算机系统中,没有真正意义上的无限内存。内存资源是有限的,如果被消耗完,计算机系统也会崩溃或变得非常缓慢。但是,对于某些需要处理大规模数据的任务,可能需要扩大内存以提高计算速度和效率。这可以通过以下...

qq浏览器手机版下载(qq浏览器手机版下载官网)

你是不是没有下载完整的软件,如果你一直用手机试验不成功的话,你可以尝试用电脑进行安装,首先,既然你喜欢在手机上使用qq浏览器,那么我们电脑也用qq浏览器,我平时也喜欢用qq浏览器,看新闻的话,添加书签...