Merge "Avoid double "error" prefix"
diff --git a/java/com/google/gerrit/server/git/receive/ReceiveCommits.java b/java/com/google/gerrit/server/git/receive/ReceiveCommits.java
index c962df0..6267590 100644
--- a/java/com/google/gerrit/server/git/receive/ReceiveCommits.java
+++ b/java/com/google/gerrit/server/git/receive/ReceiveCommits.java
@@ -499,11 +499,8 @@
     for (ValidationMessage m : messages) {
       String msg = m.getType().getPrefix() + m.getMessage();
 
-      if (m.isError()) {
-        messageSender.sendError(msg);
-      } else {
-        messageSender.sendMessage(msg);
-      }
+      // Avoid calling sendError which will add its own error: prefix.
+      messageSender.sendMessage(msg);
     }
   }
 
diff --git a/javatests/com/google/gerrit/acceptance/git/AbstractPushForReview.java b/javatests/com/google/gerrit/acceptance/git/AbstractPushForReview.java
index 78a3d15..a5ff746 100644
--- a/javatests/com/google/gerrit/acceptance/git/AbstractPushForReview.java
+++ b/javatests/com/google/gerrit/acceptance/git/AbstractPushForReview.java
@@ -1554,6 +1554,22 @@
   }
 
   @Test
+  public void errorMessageFormat() throws Exception {
+    RevCommit c = createCommit(testRepo, "Message without Change-Id");
+    assertThat(GitUtil.getChangeId(testRepo, c)).isEmpty();
+    String ref = "refs/for/master";
+    PushResult r = pushHead(testRepo, ref);
+    RemoteRefUpdate refUpdate = r.getRemoteUpdate(ref);
+    assertThat(refUpdate.getStatus()).isEqualTo(RemoteRefUpdate.Status.REJECTED_OTHER_REASON);
+    String reason =
+        String.format(
+            "commit %s: missing Change-Id in message footer", c.toObjectId().abbreviate(7).name());
+    assertThat(refUpdate.getMessage()).isEqualTo(reason);
+
+    assertThat(r.getMessages()).contains("\nERROR: " + reason);
+  }
+
+  @Test
   @GerritConfig(name = "receive.allowPushToRefsChanges", value = "true")
   public void testPushWithChangedChangeId() throws Exception {
     PushOneCommit.Result r = pushTo("refs/for/master");