我是编写python脚本的初学者,因为我目前正在学习它。
我正在写一段代码,在python gitlab模块的帮助下,我将提取我所拥有的分支,这些分支的名称类似于tobedeleted_branch1
、tobedeleted_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个(。大多数列表方法也是如此。