Merge branch 'stable-2.7'
Conflicts:
pom.xml
Change-Id: I1aa397364c36a78e5725d59cf586af5d040cc350
diff --git a/BUCK b/BUCK
new file mode 100644
index 0000000..1d6a76d
--- /dev/null
+++ b/BUCK
@@ -0,0 +1,5 @@
+gerrit_plugin(
+ name = 'commit-message-length-validator',
+ srcs = glob(['src/main/java/**/*.java']),
+ resources = glob(['src/main/resources/**/*']),
+)
diff --git a/pom.xml b/pom.xml
index be8b057..6db3f29 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,7 @@
<name>commit-message-length-validator</name>
<groupId>com.googlesource.gerrit.plugins.validators</groupId>
<packaging>jar</packaging>
- <version>2.7</version>
+ <version>2.8-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/validators/CommitMessageLengthValidation.java b/src/main/java/com/googlesource/gerrit/plugins/validators/CommitMessageLengthValidation.java
index 8214223..5bba706 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/validators/CommitMessageLengthValidation.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/validators/CommitMessageLengthValidation.java
@@ -36,13 +36,16 @@
public class CommitMessageLengthValidation implements CommitValidationListener {
private final static int DEFAULT_MAX_SUBJECT_LENGTH = 65;
private final static int DEFAULT_MAX_LINE_LENGTH = 70;
+ private final static boolean DEFAULT_REJECT_TOO_LONG = false;
private final static String COMMIT_MESSAGE_SECTION = "commitmessage";
private final static String MAX_SUBJECT_LENGTH_KEY = "maxSubjectLength";
private final static String MAX_LINE_LENGTH_KEY = "maxLineLength";
+ private final static String REJECT_TOO_LONG_KEY = "rejectTooLong";
private final Config config;
private final int maxSubjectLength;
private final int maxLineLength;
+ private boolean rejectTooLong;
@Inject
public CommitMessageLengthValidation(@GerritServerConfig Config gerritConfig)
@@ -54,6 +57,21 @@
this.maxLineLength = config.getInt(
COMMIT_MESSAGE_SECTION, null,
MAX_LINE_LENGTH_KEY, DEFAULT_MAX_LINE_LENGTH);
+ this.rejectTooLong = config.getBoolean(
+ COMMIT_MESSAGE_SECTION, REJECT_TOO_LONG_KEY,
+ DEFAULT_REJECT_TOO_LONG);
+ }
+
+ private void onLineTooLong(final AbbreviatedObjectId id,
+ List<CommitValidationMessage> messagesList, final String errorMessage)
+ throws CommitValidationException {
+ final String message = id.name() + ": " + errorMessage;
+ if (rejectTooLong) {
+ messagesList.add(new CommitValidationMessage(message, true));
+ throw new CommitValidationException("Commit length validation failed", messagesList);
+ } else {
+ messagesList.add(new CommitValidationMessage("(W) " + message, false));
+ }
}
@Override
@@ -64,9 +82,9 @@
List<CommitValidationMessage> messages = new ArrayList<CommitValidationMessage>();
if (this.maxSubjectLength < commit.getShortMessage().length()) {
- messages.add(new CommitValidationMessage("(W) " + id.name() //
- + ": commit subject >" + this.maxSubjectLength //
- + " characters; use shorter first paragraph", false));
+ onLineTooLong(id, messages,
+ new String("commit subject >" + this.maxSubjectLength
+ + " characters; use shorter first paragraph"));
}
int longLineCnt = 0, nonEmptyCnt = 0;
@@ -80,9 +98,9 @@
}
if (0 < longLineCnt && 33 < longLineCnt * 100 / nonEmptyCnt) {
- messages.add(new CommitValidationMessage("(W) " + id.name() //
- + ": commit message lines >" + this.maxLineLength //
- + " characters; manually wrap lines", false));
+ onLineTooLong(id, messages,
+ new String("commit message lines >" + this.maxLineLength
+ + " characters; manually wrap lines"));
}
return messages;
diff --git a/src/main/resources/Documentation/about.md b/src/main/resources/Documentation/about.md
new file mode 100644
index 0000000..04b05da
--- /dev/null
+++ b/src/main/resources/Documentation/about.md
@@ -0,0 +1,3 @@
+This plugin checks the length of a commit's commit message
+subject and message body, and reports warnings or errors to
+the git client if the lengths are exceeded.
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index eee011a..92440e7 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -1,11 +1,7 @@
Commit Message Length Configuration
===================================
-This plugin checks the length of a commit's commit message
-subject and message body, and reports warnings to the git client
-if the lengths are exceeded.
-
-The maximum lengths of the subject and message body are can be
+The maximum lengths of the subject and message body can be
configured in the standard Gerrit config file `gerrit.config`.
commitmessage.maxSubjectLength
@@ -15,3 +11,8 @@
commitmessage.maxLineLength
: Maximum length of a line in the commit message's body. If
not specified, defaults to 70.
+
+commitmessage.rejectTooLong
+: If set to `true`, reject commits whose subject or line
+ length exceeds the maximum allowed length. If not
+ specified, defaults to `false`.