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

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

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

迁移应用场景

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)

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

相关推荐

office2013plus卸载不了(office 卸载不了)

卸载方法:1、点击左下角的开始图标。2、然后选择控制面板。3、然后选择添加/删除程序,找到office,然后点击右下角的的卸载,进入卸载界面。4、等待卸载完成即可。注意:通常情况下,在控制面板是无法完...

win助手怎么完全删除(win10助手叫什么)

文档助手取消的方法取决于您当前所使用的操作系统。如果您是使用Windows操作系统,可以通过以下步骤来取消文档助手:1)在Windows搜索栏输入“控制面板”,并打开;2)点击“程序”;3)在程序列表...

惠普打印机驱动安装包(hp打印机驱动安装包)

在电脑上安装惠普打印机驱动程序的方法如下1、首先下载好驱动。2、将打印机连接至网络后,在电脑端点击开始,选择“设备和打印机”选项。3、在页面的空白处,点击鼠标的右键,然后选择“添加打印机”。4、由于打...

怎么彻底删除迈克菲(怎样删除迈克菲)
  • 怎么彻底删除迈克菲(怎样删除迈克菲)
  • 怎么彻底删除迈克菲(怎样删除迈克菲)
  • 怎么彻底删除迈克菲(怎样删除迈克菲)
  • 怎么彻底删除迈克菲(怎样删除迈克菲)
电脑有线连路由器不用打路由器无线密码

电脑使用网线,就可以不用密码连接在别人的路由器上,但前提条件是这根网线,必须通过人家同意才能查到人家的路由器上,按照规则设置好你电脑的IP地址就可以上网了。1、设置路由器,把路由器电源接好后,用一根网...

谷歌google play安卓下载(google play for android download)

谷歌安全系数高,下载是要比其他慢一点,我觉得使用这么久,还是不错的哈??手机升级EMUI10后发现桌面的谷歌商店图标不见了,更新前还在桌面,难道自己消失了?后面尝试通过应用宝重新下载GooglePl...

腾达和tplink路由器哪个好(腾达路由器和tp路由器哪个好)

一样的好。腾达路由器与tplink都是一线的路由器品牌,质量都是比较过硬的,基本不会出现买到介质产品的可能。而且两个品牌向来以性价比高而著名,以最少的钱就能享受到最新的技术。如果仅仅就这两个路由器来说...

u盘一般多少钱一个(u盘一般多少钱一个啊)

U盘并不贵哈,几十块钱就可以买到8G20多,16G的40多,32G的70多,最好买USB3.0接口以上的U盘,传输速度快,牌子可以选择金士顿、闪迪。我买的金士顿3.1U盘16G在京东官网买的,速度快,...

怎么打开打印机共享(怎么打开打印机共享设置)

打印机设置共享打印的操作步骤一、在连接打印机的电脑上依次点击“开始“菜单-”设置“-”打印机“,打开打印机界面后右键单击“打印机”图标点击到“共享”选项界面接着点击“共享这台打印机”,最后点击“确定”...

网络适配器驱动怎么安装(网络适配器驱动如何安装)

网络适配器安装驱动程序的步骤如下1、右键点击桌面上的“计算机”,选择“属性”并打开。2、打开属性左边的“设备管理器”。3、打开“网络适配器”,找到需要安装的网卡,右键点击选择“更新驱动程序”。4、选择...

硬盘参数错误(硬盘参数错误无法打开)

以下是我的回答,移动硬盘提示参数错误,这可能是由于硬盘本身的问题,如物理损坏、文件系统错误等。也可能是由于接口、数据线和计算机系统的问题导致的。以下是一些建议,希望能帮助你解决这个问题:检查硬盘:首先...

电脑蓝牙驱动软件(电脑蓝牙驱动有什么用处)

windows10蓝牙更新的方法步骤:1.电脑桌面,右键【此电脑】,点击【属性】。2.然后点击【设备管理器】。3.然后展开【蓝牙】。4.然后鼠标右键【Bluetooth】,点击【更新驱动程序(P)】。...

oppo系统更新安装包在哪删除

1、开始,先在手机的桌面上找到应用程序“设置”图标,点击进入新的操作界面。2、然后,进入到设置的操作界面后,找到“其他设置”选项,点击打开。3、进入到其他设置的操作界面后,找到“应用程序管理”选项,点...

windows7是多少位(win7系统多少位)

windows7有支持32和64位两个版本系统。windows7共有两个版本,一个是32位系统版本,建议4G或以下内存电脑配置安装。一个是64位系统版本,建议4G以上内存电脑配置安装。可以通过我的电脑...

win7官网镜像下载(win7镜像下载地址)
  • win7官网镜像下载(win7镜像下载地址)
  • win7官网镜像下载(win7镜像下载地址)
  • win7官网镜像下载(win7镜像下载地址)
  • win7官网镜像下载(win7镜像下载地址)