使用Python Gitlab模块删除特定分支



我是编写python脚本的初学者,因为我目前正在学习它。

我正在写一段代码,在python gitlab模块的帮助下,我将提取我所拥有的分支,这些分支的名称类似于tobedeleted_branch1tobedeleted_branch2等。

经过如此多的研究和一切,我能够用下面给出的脚本提取出分支的名称,但现在我想要的是,我需要删除正在打印的分支。

所以我有一个计划,我会继续将打印输出存储在一个变量中,并在一次操作中删除它们,但我仍然无法将它们存储在变量中。

一旦我在那个变量中存储了'n'个分支,我就想删除它们。

我浏览了文档,但我不知道如何在python脚本中使用它。

模块:https://python-gitlab.readthedocs.io/en/stable/index.html

借助模块REF删除分支:https://python-gitlab.readthedocs.io/en/stable/gl_objects/branches.html#branches

如有任何帮助,我们将不胜感激。

import gitlab, os
TOKEN = "MYTOKEN"
GITLAB_HOST = 'MYINSTANCE' 
gl = gitlab.Gitlab(GITLAB_HOST, private_token=TOKEN)
# set gitlab group id
group_id = 6
group = gl.groups.get(group_id, lazy=True)
#get all projects
projects = group.projects.list(include_subgroups=True, all=True)
#get all project ids
project_ids = []
for project in projects:
project_ids.append((project.id))
print(project_ids)
for project in project_ids:
project = gl.projects.get(project)
branches = project.branches.list()
for branch in branches:
if "tobedeleted" in branch.attributes['name']:
print(branch.attributes['name'])

此外,我确信这不是一个干净的方式来写剧本。你能谈谈如何让它变得更好吗?

感谢

Branch对象有一个delete方法。

for branch in project.branches.list(as_list=False):
if 'tobedeleted' in branch.name:
branch.delete()

如果你已经知道分支的确切名称,你也可以按名称删除它:

project.branches.delete('exact-branch-name')

附带说明:

您会注意到我所做的另一件事是将as_list=False参数添加到.list()中。这将确保您在所有分支中进行分页。否则,您将只获得分支的第一页(默认每页20个(。大多数列表方法也是如此。

最新更新