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

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

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

迁移应用场景

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)

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

相关推荐

win8改win7系统bios怎么设置

开机按F1或是Fn+F1进入bios:1、进入Security—SecureBoot—Disabled2、进入Startup—UEFI/LegacyBoot选项,改为Both,下面的选项UEFI/...

thinkpad重装系统u盘启动(thinkpad优盘重装win7系统步骤)

要使用Thinkpad从U盘启动装系统,您需要按照以下步骤进行操作:1.插入Thinkpad的U盘,并确保U盘已格式化。2.下载并安装一个U启动软件,该软件可以在Windows或MacOS上使用。...

校园网tplink路由器设置教程

1:看看路由器后面的接口。电源口连接电源用,LAN口可连接电脑,交换机,AP等。WAN口是连接外网用的,例如接“宽带猫”。  2:反过来路由器的背面有设置相关内容,产品序列号等信息。路由器的默认地址是...

游戏笔记本电脑推荐性价比高2025

目前无法确定具体哪款笔记本电脑在2023年的性价比最高。因为未来三年内,科技和市场都将有很大的发展和变化,同时厂商将陆续推出新款产品,而且各款笔记本电脑的定位和价格也会有所不同。除此之外,不同消费者对...

windows11支持安卓应用(windows11来了!首次支持安卓应用)

可以安装。Win11运行安卓App实际上是使用虚拟机来实现的,需要在Windows商店下载运行一个名为WindowsSubsystemforAndroid(简称WSA)的app来实现。但目前,我...

如何设置笔记本电脑无线网络连接
如何设置笔记本电脑无线网络连接

点击任务栏右下角的网络图标,点击WLAN,点击一个WiFi,点击连接,输入正确的网络安全密钥,就可以连接WiFi了。...

2026-01-01 14:55 liuian

怎么把电脑桌面的图标变小(怎么把电脑桌面图标变小win10)

设置任务栏的图标大小的方法如下1.首先我们右键电脑底下的任务栏2.然后点击“属性”3.在任务栏里,打钩“使用小图标”,或使用大图标及标准。4.当然我们还可以设置任务栏的位置,要就是说我们可以设置图标的...

windows7序列号大全(windows7旗舰版序列号)

具体方法如下:1、点击开始,在搜索中输入cmd,回车,打开命令窗口;2、在命令行输入diskpart,启动diskpart程序,我们就是要利用这个程序来查看硬盘序列号,该程序属于系统程序的一部分;3、...

手机登录路由器界面的网址(手机登录路由器页面)

1.首先,我们打开手机,点击桌面上的设置图标。2.进入设置页面,点击“无线和网络”。3.点击“WLAN”。4.在可用WLAN列表中,连接上你家路由器的WIFI网络。5.接下来,把路由器背面翻过来,可以...

邮箱的格式qq邮箱的格式(邮箱的格式qq邮箱的格式一样吗)
邮箱的格式qq邮箱的格式(邮箱的格式qq邮箱的格式一样吗)

QQ邮箱的地址正确书写格式,前面QQ号码,后面加一个@,然后就是qq,加一个小数点,后面是com。QQ邮箱是腾讯公司2002年推出,向用户提供安全、稳定、快速、便捷电子邮件服务的邮箱产品,已为超过1亿的邮箱用户提供免费和增值邮箱服务。QQ邮...

2026-01-01 12:55 liuian

戴尔官方原版oem镜像(戴尔镜像文件在哪里)

您好戴尔电脑恢复出厂设置的方法如下:(1)、开机进入系统前,按F8,进入Windows7的高级启动选项,选择“修复计算机”。(2)、选择键盘输入方法。(3)、如果有管理员密码,需要输入;如果没有设置...

装系统的软件(装系统)

打开黑鲨装机大师,点击【一键装机】,这里选择【系统重装】黑鲨会优先检测本地环境是否符合装机条件,检测完毕后点击下一步进入了【选择系统】画面,在这里选择win1064位纯净绿色最新版,然后点击【安装此...

windows安全模式进不去(windows安全模式进不去怎么办)
windows安全模式进不去(windows安全模式进不去怎么办)

电脑安全模式进不去的原因大多数都是硬盘出现了故障或者是系统不能兼容导致的。还有一种原因就是电脑中了木马病毒,这种情况下要想办法重启进行杀毒就好了。现在将电脑进行重新启动,再看季的时候按F8这个功能键,当然不是每个牌子的电脑进入安全模式的按键...

2026-01-01 11:05 liuian

台式电脑配置查询(台式机配置查询)

查看电脑硬件配置信息方法    1、首先右键单击计算机——属性,进入电脑属性选项卡!  2、在属性选项卡里可看到基本的CPU及内存配置,更详细的配置资料点...

winpe免安装版(pe系统免安装)

在没有WinPE系统的电脑上安装WinPE,首先需要确保你的电脑有一个能正常启动的操作系统,因为所有接下来的操作都在本地操作系统下进行。然后,你需要准备一个8G或16G的U盘,用于存储WinPE系统,...