马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
几年没打仗gitlab了,新版本装完以子女码提交到默认的main分支,master不再是主分支
项目有几十个堆栈,研发提交接码后堆栈所在和之前的发生了变革
有几个点 必要注意
一、gitlab初始化设置
1、修改全局默认分支
2、关闭分支掩护
关闭允许注册
修改语言
默认分支假如是最开始修改好的,新建的项目就没有受掩护分支了
注意!!!!
我新摆设一次后发现了一个标题,将默认分支从main修改为master后,分支掩护照旧存在
这里直接关闭掩护就行
上面修改了全局设置不会影响已经创建好的项目,以是还必要批量修改已创建的项目
先修改Group的默认分支,不会影响已存在的项目
修改gitlab全局的默认分支
这就引出了需求,要获取当前堆栈下全部堆栈所在,还要修改全部堆栈的默认分支,从main修改为master
二、API批量操纵
天生AccessToken
创建个人访问令牌
- 填写信息时,确保勾选以下权限(Scopes):
- api
- read_api
- read_repository
- write_repository
- admin_mode(如果是要批量修改默认分支,可能需要这个权限)
- # 权限解析
- api 和 read_api: 基本的 API 访问权限
- read_repository: 读取仓库信息
- write_repository: 修改仓库设置(包括默认分支)
- admin_mode: 管理员级别的操作权限
复制代码 需求1-获取堆栈下全部项目所在
- import requests
- import sys
- import time
- from typing import List, Dict
- class GitLabProjectFetcher:
- def __init__(self, base_url: str, private_token: str):
- """
- 初始化 GitLab API 客户端
-
- Args:
- base_url: GitLab 实例的基础 URL
- private_token: GitLab 个人访问令牌
- """
- self.base_url = base_url.rstrip('/')
- self.headers = {
-
- 'PRIVATE-TOKEN': private_token}
- self.session = requests.Session()
- self.session.headers.update(self.headers)
- def get_all_projects(self) -> List[Dict]:
- """获取所有项目"""
- projects = []
- page = 1
- while True:
- url = f"{
-
- self.base_url}/api/v4/projects"
- params = {
-
-
- 'page': page,
- 'per_page': 100,
- 'order_by': 'path',
- 'sort': 'asc'
- }
-
- try:
- response = self.session.get(url, params=params)
- response.raise_for_status()
-
- batch = response.json()
- if not batch:
- break
-
复制代码 |