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

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

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

迁移应用场景

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)

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

相关推荐

win10键盘全失灵(win10所有键盘失灵)
  • win10键盘全失灵(win10所有键盘失灵)
  • win10键盘全失灵(win10所有键盘失灵)
  • win10键盘全失灵(win10所有键盘失灵)
  • win10键盘全失灵(win10所有键盘失灵)
怎么升级到win7系统(如何升级电脑系统win7到win10)

Windows7系统如何升级为win10。嗯,这个是需要重新安装操作系统的。请在安装前先预备好备份好windows7系统下面你自己的个人数据备份到自己的移动硬盘上面。然后通过USB导的方式进行安装,...

十大免费云手机(免费云手机哪个好)

没有哪个云手机是真正永久免费的。我所了解到的云手机产品,都是基于ARM服务器开发出来的虚拟手机,有设备成本、维护成本,所以云手机理论上一种付费服务,我想没有哪个品牌愿意一直免费无偿的提供用户云手机使用...

2014cad官方免费下载(2014年cad免费下载)

不能安装因为可能是你的计算机系统不兼容CAD2014版本,或者你的计算机内存不足,也可能是你下载的版本有问题。建议你重新下载最新版本或者更换计算机系统,并且检查计算机内存是否充足。同时,你可以尝试去...

雨林木风xp系统好用吗(雨林木风xp系统自带什么软件)

三个都不错的。三个的盘我都用过,番茄和深度都没什么问题,雨林的恰好我用的那个版本有BUG老死机,之后再用了一个纯净版的感觉也不怎么样就没用过了。推荐楼主用大地GHOSTXP系统,如果楼主只有上面三个...

查看本机mac地址(查本机的mac地址方法)
查看本机mac地址(查本机的mac地址方法)

方法一:使用ipconfig命令轻松查询电脑mac地址  进入电脑桌面,从左下角的开始→运行,在运行命令框中输入cmd命令,之后回车进入cmd命令操作界面,在里面输入ipconfig/all回车即可看到网卡与本地IP等诸多网络设备相信信息...

2025-12-02 07:55 liuian

07版word(07版Word的在哪)

答:电脑word突然变成2007版本的原因:word的模板文件造成的。1.首先打开电脑桌面左下角的开始菜单栏,选择打开“运行”。2.然后在弹出来的运行窗口中点击输入“%appdata%\microso...

163邮箱登陆登录入口网页(163网站邮箱登录)

163邮箱登录首页入口为http://mail.163.com/网易163免费邮箱--中文邮箱第一品牌.容量自动翻倍,支持50兆附件,免费开通手机号码邮箱赠送3G超大附件服务.支持各种客户端软件收发,...

adobe flash player已不再受支持

解决办法1.首页上有FlashPlayer安装、Flash修复、SWF文件播放器、浏览Flash网页。2.FlashPlayer,如果浏览器上的Flash功能异常,选择FlashPlayer安装...

显卡买什么牌子好(显卡买哪款好)

1、七彩虹Colorful——深圳市七彩虹科技发展有限公司2、华硕ASUS——华硕电脑(上海)有限公司3、微星MSI——微旭商贸(上海)有限公司4、影驰GALAXY——深圳市影驰科技有限责任公司5、蓝...

怎么关防火墙win10(怎么关防火墙手机)
  • 怎么关防火墙win10(怎么关防火墙手机)
  • 怎么关防火墙win10(怎么关防火墙手机)
  • 怎么关防火墙win10(怎么关防火墙手机)
  • 怎么关防火墙win10(怎么关防火墙手机)
百度搜索浏览器(百度搜索浏览器怎么关闭)

是有的。原因是QQ浏览器是由腾讯公司开发的,而百度搜索引擎在中国是非常流行的。为了满足用户的需求,QQ浏览器加入了百度搜索引擎。因此,在QQ浏览器的搜索框中,可以直接使用百度搜索引擎进行搜索。可以进一...

格式化太慢能取消吗(格式化时间很长)

你使用的是完全格式化,就是会检查并修复坏扇区的那种,这是很慢的,一般用于怀疑磁盘有损坏的情况,比如:平时用电脑可能经查出现卡死,突然变慢,经常有提示文件损坏,需要检查等。如果你对你的硬盘比较有信心,可...

kmspicowin10激活工具(kms激活windows10)

怕后门,你就自己动手激活嘛!以激活Office2016VOL版本为例,打开cmd,输入#进入到Office目录,目的是为了找到ospp.vbscdC:\ProgramFiles...

笔记本电脑购买推荐(买笔记本电脑那款的最好)

笔记本电脑对于个人而言,如果你工作累了,需要休闲放松看看电影,听听歌。其实是个不错的选择。另外,如果在家里需要查些资料,发发邮件,上上网购,看看新闻都还是蛮好的。如果有电脑,估计大家很少会每次都用手机...