gitlab初始化+API批量操纵

[复制链接]
发表于 2025-12-2 19:16:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
几年没打仗gitlab了,新版本装完以子女码提交到默认的main分支,master不再是主分支
项目有几十个堆栈,研发提交接码后堆栈所在和之前的发生了变革
有几个点 必要注意
一、gitlab初始化设置

1、修改全局默认分支
2、关闭分支掩护
关闭允许注册

修改语言




默认分支假如是最开始修改好的,新建的项目就没有受掩护分支了

注意!!!!

我新摆设一次后发现了一个标题,将默认分支从main修改为master后,分支掩护照旧存在

这里直接关闭掩护就行

上面修改了全局设置不会影响已经创建好的项目,以是还必要批量修改已创建的项目
先修改Group的默认分支,不会影响已存在的项目

修改gitlab全局的默认分支

这就引出了需求,要获取当前堆栈下全部堆栈所在,还要修改全部堆栈的默认分支,从main修改为master
二、API批量操纵

天生AccessToken

创建个人访问令牌

  1. 填写信息时,确保勾选以下权限(Scopes):
  2. api
  3. read_api
  4. read_repository
  5. write_repository
  6. admin_mode(如果是要批量修改默认分支,可能需要这个权限)
  7. # 权限解析
  8. api 和 read_api: 基本的 API 访问权限
  9. read_repository: 读取仓库信息
  10. write_repository: 修改仓库设置(包括默认分支)
  11. admin_mode: 管理员级别的操作权限
复制代码
需求1-获取堆栈下全部项目所在

  1. import requests
  2. import sys
  3. import time
  4. from typing import List, Dict
  5. class GitLabProjectFetcher:
  6.     def __init__(self, base_url: str, private_token: str):
  7.         """
  8.         初始化 GitLab API 客户端
  9.         
  10.         Args:
  11.             base_url: GitLab 实例的基础 URL
  12.             private_token: GitLab 个人访问令牌
  13.         """
  14.         self.base_url = base_url.rstrip('/')
  15.         self.headers = {
  16.    
  17.    'PRIVATE-TOKEN': private_token}
  18.         self.session = requests.Session()
  19.         self.session.headers.update(self.headers)
  20.     def get_all_projects(self) -> List[Dict]:
  21.         """获取所有项目"""
  22.         projects = []
  23.         page = 1
  24.         while True:
  25.             url = f"{
  26.      
  27.      self.base_url}/api/v4/projects"
  28.             params = {
  29.    
  30.    
  31.                 'page': page,
  32.                 'per_page': 100,
  33.                 'order_by': 'path',
  34.                 'sort': 'asc'
  35.             }
  36.             
  37.             try:
  38.                 response = self.session.get(url, params=params)
  39.                 response.raise_for_status()
  40.                
  41.                 batch = response.json()
  42.                 if not batch:
  43.                     break
  44.          
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表