Add option to not auto-vote on merge success and/or failure.
Change-Id: Ie8e7d9051679d9958a946c0e07a700db5589e3c3
diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java
index 7f0f6d5..1a31d16 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java
@@ -242,6 +242,14 @@
return (short) getConfig().getInt("global", "minAutomergeVote", -2);
}
+ public boolean maxAutomergeVoteDisabled() throws ConfigInvalidException {
+ return getConfig().getBoolean("global", "disableMaxAutomergeVote", false);
+ }
+
+ public boolean minAutomergeVoteDisabled() throws ConfigInvalidException {
+ return getConfig().getBoolean("global", "disableMinAutomergeVote", false);
+ }
+
// Returns overriden manifest config if specified, default if not
private String getManifestFile() throws ConfigInvalidException {
String manifestFile = getConfig().getString("global", null, "manifestFile");
diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
index 40cb02a..766529d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
@@ -259,7 +259,9 @@
reviewInput.notify = NotifyHandling.ALL;
reviewInput.tag = MERGE_CONFLICT_TAG;
// Vote minAutomergeVote if we hit a conflict.
- labels.put(config.getAutomergeLabel(), config.getMinAutomergeVote());
+ if (!config.minAutomergeVoteDisabled()) {
+ labels.put(config.getAutomergeLabel(), config.getMinAutomergeVote());
+ }
}
reviewInput.labels = labels;
gApi.changes()
@@ -426,7 +428,9 @@
ChangeApi downstreamChange = gApi.changes().create(downstreamChangeInput);
// Vote maxAutomergeVote on the change so we know it was successful.
- updateVote(downstreamChange.get(), config.getAutomergeLabel(), config.getMaxAutomergeVote());
+ if (!config.maxAutomergeVoteDisabled()) {
+ updateVote(downstreamChange.get(), config.getAutomergeLabel(), config.getMaxAutomergeVote());
+ }
}
public String getOrSetTopic(int sourceId, String topic) throws RestApiException {
@@ -538,7 +542,9 @@
}
ChangeInfo downstreamChange = originalChange.createMergePatchSet(mergePatchSetInput);
- updateVote(downstreamChange, config.getAutomergeLabel(), config.getMaxAutomergeVote());
+ if (!config.maxAutomergeVoteDisabled()) {
+ updateVote(downstreamChange, config.getAutomergeLabel(), config.getMaxAutomergeVote());
+ }
}
private String getPreviousRevision(ChangeApi change, int currentPatchSetNumber)
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index 0b46f5c..9410e04 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -39,12 +39,28 @@
the user will have a vote of 0, so that it can be easily programatically
distinguished from the otheres.
+ Will not vote if disableMaxAutomergeVote is true.
+
global.minAutomergeVote
: Value to vote on a failed automerge.
When the automerger detects a merge conflict from one branch to another, it
will vote minAutomergeVote for the configured automergeLabel.
+ Will not vote if disableMinAutomergeVote is true.
+
+global.disableMaxAutomergeVote
+: Whether to vote on a successful automerge.
+
+ If true, will not vote maxAutomergeVote on a successful downstream merge.
+ Defaults to false.
+
+global.disableMinAutomergeVote
+: Whether to vote on a failed automerge.
+
+ If true, will not vote minAutomergeVote on a failed downstream merge.
+ Defaults to false.
+
global.hostName
: Hostname to use in a custom conflict message.
diff --git a/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderIT.java b/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderIT.java
index 5b35c08..5c5466f 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderIT.java
@@ -210,6 +210,24 @@
assertThat(configLoader.getMinAutomergeVote()).isEqualTo(-3);
}
+ @Test
+ public void maxAutomergeVoteDisabledTest() throws Exception {
+ defaultSetup("automerger.config");
+ assertThat(configLoader.maxAutomergeVoteDisabled()).isEqualTo(false);
+ }
+
+ @Test
+ public void maxAutomergeVoteDisabledTest_isDisabled() throws Exception {
+ defaultSetup("alternate.config");
+ assertThat(configLoader.maxAutomergeVoteDisabled()).isEqualTo(true);
+ }
+
+ @Test
+ public void minAutomergeVoteDisabledTest() throws Exception {
+ defaultSetup("automerger.config");
+ assertThat(configLoader.minAutomergeVoteDisabled()).isEqualTo(false);
+ }
+
private void setupTestRepo(
String resourceName, Project.NameKey projectNameKey, String branchName, String filename)
throws Exception {
diff --git a/src/test/resources/com/googlesource/gerrit/plugins/automerger/alternate.config b/src/test/resources/com/googlesource/gerrit/plugins/automerger/alternate.config
index 3f0ed7d..ed3c829 100644
--- a/src/test/resources/com/googlesource/gerrit/plugins/automerger/alternate.config
+++ b/src/test/resources/com/googlesource/gerrit/plugins/automerger/alternate.config
@@ -14,6 +14,7 @@
manifestProject = platform/manifest
maxAutomergeVote = 5
minAutomergeVote = -3
+ disableMaxAutomergeVote = true
ignoreProjects = platform/ignore/me
conflictMessage = line1\n\
line2\n\