dct= [
(project1,branch1,branch2,review1)
(project2,branch1,branch2,review2)
(project3,branch1,branch2,review3)
]
msg = “S,需要减分{0}”
管控方法
def R_666_interception(branch_2_change,review,interception_name,subInterceptionType):
pass
get_all_changeds(project,changeid):
return changes
get_interception_change(changes,branch,reviewer):
for change_one in changes:
if change_one.branch == branch:
#判断是否有review-2,# 不全 未判断是否是这个管控的-2,需要根据评论判断
return change_one
juge_interception_or_remove(change,chages,current_branch,upstream_branch,reviewer):
# 然后根据这个仓和changeid,查询gerrit,找到同changeid + 同仓的所有changes,
changes = get_all_changeds(change.project,change.changeid)
all_branch = [change_one.branch for change_one in changes]
# 两边都有提交,直接消分。
if current_branch in new_lst and upstream_branch in new_lst:
for branch in [current_branch,upstream_branch]:
branch_2_change = get_interception_change(changes,branch,reviewer)
if branch_2_change:
# 在对这个 branch_2_change 进行消分,+ review
break
# 只提了一个分支,肯定就是当前的这个change。
else:
for branch in [current_branch,upstream_branch]:
branch_2_change = get_interception_change(changes,branch,reviewer)
# 如果这个分支存在-2,
if not branch_2_change:
# 进行管控 并减分
R_666_interception(branch_2_change,review,interception_name,subInterceptionType)
定制化分支互锁
if change.project in [ one[0] for one in dct] :
if change.branch in [ one[1] for one in dct] or
change.branch in [ one[2] for one in dct]:
for project,current_branch,upstream_branch,reviewer in dct:
# 仓和分支都属于,肯定需要减分或者消分,
if change.project == project and change.branch in [current_branch,upstream_branch]:
juge_interception_or_remove(change,chages,current_branch,upstream_branch,reviewer)
break
没啥用的
for change_one in changes:
# 确认一下,找到这个单,判断这个单是否有review的-2,
if change_one.project == change.project and change_one.branch == change.branch:
# 判断有reviewer的-2,代表这个是 RE_INTERCEPTION触发的,或者更新patchset 触发的,,
#
# 没有reviewer -2 ,代表是,新调的单,或者需要减分的单。
#
# 管控入口
for project,current_branch,upstream_branch,_ in dct:
if change.project == project and change.branch in [current_branch,upstream_branch]:
# 进行管控
if change.branch == current_branch and change.branch != upstream_branch:
upstream_branch = upstream_branch
elif change.branch == upstream_branch and change.branch != current_branch
current_branch = upstream_branch
else:
# 有一个相同的就退出,
print "上下游project和branch相同,请检查配置"
break
# 调用管控方法:
666_interception(change,current_branch,upstream_branch,review,interception_name,subInterceptionType):
break
#return (change,current_project,current_branch,upstream_branch)
else:
print " 888组件,系统为R,芯片为S,不同仓,管控,未生效。"
# 特殊分支互锁消分:明天写