You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python提取GitLab分支authored_date判定并清理超7天待删分支

解决方案

以下是修改后可直接使用的完整代码,核心逻辑包含authored_date提取、时间差计算、过期分支判断三部分:

import gitlab
import os
from datetime import datetime, timedelta, timezone

# 身份认证
TOKEN = "MYTOKEN"
GITLAB_HOST = 'MYINSTANCE' # 替换为你的GitLab实例地址
gl = gitlab.Gitlab(GITLAB_HOST, private_token=TOKEN)

# 配置目标组ID
group_id = 6
group = gl.groups.get(group_id, lazy=True)

# 获取组内所有项目(包含子组)
projects = group.projects.list(include_subgroups=True, all=True)
project_ids = [project.id for project in projects]
print("待扫描项目ID列表:", project_ids)

for pid in project_ids:
    project = gl.projects.get(pid)
    branches = project.branches.list() 
    for branch in branches:
        branch_name = branch.attributes['name']
        # 匹配名称带tobedeleted的分支
        if "tobedeleted" not in branch_name:
            continue
        print(f"\n匹配到待检查分支:{branch_name}")
        # 提取authored_date字段
        commit_info = branch.attributes['commit']
        authored_date_str = commit_info['authored_date']
        # 转换为带时区的datetime对象用于计算
        authored_date = datetime.fromisoformat(authored_date_str)
        # 获取当前UTC时间,和GitLab返回的时间时区保持一致避免误差
        now_utc = datetime.now(timezone.utc)
        # 计算时间差
        date_diff = now_utc - authored_date
        print(f"分支最后提交日期:{authored_date.date()},距今已{date_diff.days}天")
        # 判断是否超过7天
        if date_diff > timedelta(days=7):
            print(f"满足删除条件,正在删除分支:{branch_name}")
            # 测试阶段可先注释下面这行,确认待删除列表无误后再取消注释
            branch.delete()
            print("删除成功")

核心逻辑说明

  • branch.attributes['commit']本身就是字典结构,直接通过键authored_date就能取出对应的时间字符串,该字符串为ISO 8601标准格式,可直接用datetime.fromisoformat转换为可计算的时间对象
  • 由于GitLab返回的时间为UTC时区,所以当前时间也需要使用带UTC时区的对象进行计算,避免时区不匹配导致的判断误差
  • 两个datetime对象相减得到timedelta类型的差值,直接和timedelta(days=7)对比即可判断是否满足删除条件

注意事项

  • 首次运行建议先注释branch.delete()行,仅打印待删除的分支列表,确认逻辑无误后再开启删除操作,避免误删正常分支
  • 所用的GitLab Token需要拥有对应项目的维护者及以上权限,否则无法执行分支删除操作

内容的提问来源于stack exchange,提问作者Sameer Atharkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:06:08