Add support for MCR/NO Bug: b/203788354 Change-Id: I7e01cfb2e1e2dee636491baddbdf1309f7ba3ceb
diff --git a/code-owners.config b/code-owners.config new file mode 100644 index 0000000..5858a4b --- /dev/null +++ b/code-owners.config
@@ -0,0 +1,6 @@ +[codeOwners] + overrideApproval = Owners-Override+1 + rejectNonResolvableCodeOwners = false + pathExpressions = SIMPLE + disabled = true + fallbackCodeOwners = ALL_USERS
diff --git a/project.config b/project.config index 1ec2daf..33244ee 100644 --- a/project.config +++ b/project.config
@@ -49,6 +49,11 @@ createTag = group Project Owners createSignedTag = group Administrators createSignedTag = group Project Owners +[label "Bot-Commit"] + defaultValue = 0 + value = 0 No score + value = +1 Looks good to me + function = NoBlock [label "Code-Review"] function = MaxWithBlock defaultValue = 0 @@ -60,6 +65,15 @@ value = 0 No score value = +1 Looks good to me, but someone else must approve value = +2 Looks good to me, approved + ignoreSelfApproval = false +[label "Owners-Override"] + defaultValue = 0 + value = 0 No score + value = +1 Looks good to me + function = NoBlock + copyAllScoresOnTrivialRebase = true + copyAllScoresIfNoCodeChange = true + copyAllScoresIfListOfFilesDidNotChange = true [access "refs/for/*"] addPatchSet = group Registered Users pushMerge = deny group Registered Users
diff --git a/rules.pl b/rules.pl new file mode 100644 index 0000000..55d9a60 --- /dev/null +++ b/rules.pl
@@ -0,0 +1,22 @@ +% If Bot-Commit+1 vote exists, replace all `need(_)` votes on Code-Review and +% Verified with `may(_)` votes. +% `ok(_)`s and `reject(_)`s are preserved. +% This means that Code-Review and Verified labels are never needed to submit a +% change, but may be approved or rejected. +submit_filter(In, Out) :- + gerrit:commit_label(label('Bot-Commit', 1), _), + !, + In =.. [submit | A], + filter_label('Code-Review', A, B), + filter_label('Verified', B, C), + Out =.. [submit | C]. +% If Bot-Commit+1 is not present, do nothing. +submit_filter(In, In). +% Replace instances of `label(Name, need(_))` with `label(Name, may(_))` and +% leave the rest unchanged. +filter_label(_, [], []). +filter_label(Name, [label(Name, need(_)) | Ls], [label(Name, may(_)) | Rs]) :- + !, + filter_label(Name, Ls, Rs). +filter_label(Name, [L | Ls], [L | Rs]) :- + filter_label(Name, Ls, Rs).