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`.
