Fixed regression caused by the defaultValue feature
[1] added support for selecting default values for labels.
Unfortunately it also broke the ability to remove labels
as described in [2], more precisely by: "To remove a label in a child
project, add an empty label with the same name as in the parent."
This fix make it possible to push empty labels in project.config
to refs/meta/config again. Without it, the following error is returned
by gerrit: 'project.config: Invalid defaultValue "0" for label ...'
[1] https://gerrit-review.googlesource.com/#/c/55750/
[2] https://gerrit-review.googlesource.com/Documentation/config-labels.html#label_custom
Change-Id: Icd727f64cb7a904957a2acc5143fe801653cfabe
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ProjectConfig.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ProjectConfig.java
index a905385..3513942 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ProjectConfig.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ProjectConfig.java
@@ -684,13 +684,15 @@
label.setFunctionName(null);
}
- short dv = (short) rc.getInt(LABEL, name, KEY_DEFAULT_VALUE, 0);
- if (isInRange(dv, values)) {
- label.setDefaultValue(dv);
- } else {
- error(new ValidationError(PROJECT_CONFIG, String.format(
- "Invalid %s \"%s\" for label \"%s\"",
- KEY_DEFAULT_VALUE, dv, name)));
+ if (!values.isEmpty()) {
+ short dv = (short) rc.getInt(LABEL, name, KEY_DEFAULT_VALUE, 0);
+ if (isInRange(dv, values)) {
+ label.setDefaultValue(dv);
+ } else {
+ error(new ValidationError(PROJECT_CONFIG, String.format(
+ "Invalid %s \"%s\" for label \"%s\"",
+ KEY_DEFAULT_VALUE, dv, name)));
+ }
}
label.setCopyMinScore(
rc.getBoolean(LABEL, name, KEY_COPY_MIN_SCORE, false));