ReceiveCommits: Fix error message when Force Push is required

JGit only respects the message in the ReceiveCommand when the Result is
REJECTED_OTHER_REASON. For any other result, it uses an internal
mapping from enum value to hard-coded string.

Change-Id: Ic857fc10bf96f11b4bd6a0e1fa79d9f66e7b73fd
diff --git a/java/com/google/gerrit/server/git/receive/ReceiveCommits.java b/java/com/google/gerrit/server/git/receive/ReceiveCommits.java
index bcdc00b..6ff1ec9 100644
--- a/java/com/google/gerrit/server/git/receive/ReceiveCommits.java
+++ b/java/com/google/gerrit/server/git/receive/ReceiveCommits.java
@@ -36,7 +36,6 @@
 import static org.eclipse.jgit.transport.ReceiveCommand.Result.NOT_ATTEMPTED;
 import static org.eclipse.jgit.transport.ReceiveCommand.Result.OK;
 import static org.eclipse.jgit.transport.ReceiveCommand.Result.REJECTED_MISSING_OBJECT;
-import static org.eclipse.jgit.transport.ReceiveCommand.Result.REJECTED_NONFASTFORWARD;
 import static org.eclipse.jgit.transport.ReceiveCommand.Result.REJECTED_OTHER_REASON;
 
 import com.google.common.base.Function;
@@ -1228,8 +1227,7 @@
       }
       actualCommands.add(cmd);
     } else {
-      cmd.setResult(
-          REJECTED_NONFASTFORWARD, " need '" + PermissionRule.FORCE_PUSH + "' privilege.");
+      cmd.setResult(REJECTED_OTHER_REASON, "need '" + PermissionRule.FORCE_PUSH + "' privilege.");
     }
   }
 
diff --git a/javatests/com/google/gerrit/acceptance/git/ForcePushIT.java b/javatests/com/google/gerrit/acceptance/git/ForcePushIT.java
index 752da69..856644c 100644
--- a/javatests/com/google/gerrit/acceptance/git/ForcePushIT.java
+++ b/javatests/com/google/gerrit/acceptance/git/ForcePushIT.java
@@ -51,7 +51,7 @@
         pushFactory.create(db, admin.getIdent(), testRepo, "change2", "b.txt", "content");
     push2.setForce(true);
     PushOneCommit.Result r2 = push2.to("refs/heads/master");
-    r2.assertErrorStatus("non-fast forward");
+    r2.assertErrorStatus("need 'Force Push' privilege.");
   }
 
   @Test
diff --git a/javatests/com/google/gerrit/acceptance/git/PushPermissionsIT.java b/javatests/com/google/gerrit/acceptance/git/PushPermissionsIT.java
index ecc7e84..2811df5 100644
--- a/javatests/com/google/gerrit/acceptance/git/PushPermissionsIT.java
+++ b/javatests/com/google/gerrit/acceptance/git/PushPermissionsIT.java
@@ -100,11 +100,7 @@
   public void nonFastForwardUpdateDenied() throws Exception {
     ObjectId commit = testRepo.commit().create();
     PushResult r = push("+" + commit.name() + ":refs/heads/master");
-    assertThat(r)
-        .onlyRef("refs/heads/master")
-        // TODO(dborowitz): ReceivePack#sendStatusReport ignores the message unless the result is
-        // REJECTED_OTHER_REASON, which this is not.
-        .isRejected("non-fast forward");
+    assertThat(r).onlyRef("refs/heads/master").isRejected("need 'Force Push' privilege.");
     assertThat(r).hasNoMessages();
     // TODO(dborowitz): Why does this not mention refs?
     assertThat(r).hasProcessed(ImmutableMap.of());