ReceiveCommits: Fix NPE when pushing to refs/changes/n

Change-Id: Iccf24e5262dcfe8e0fde0b63e1ef5411d7266592
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/AbstractPushForReview.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/AbstractPushForReview.java
index 1d21cad..e65d51e 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/AbstractPushForReview.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/AbstractPushForReview.java
@@ -202,6 +202,18 @@
   }
 
   @Test
+  public void testPushNewPatchsetToRefsChanges() throws GitAPIException,
+    IOException, OrmException {
+    PushOneCommit.Result r = pushTo("refs/for/master");
+    r.assertOkStatus();
+    PushOneCommit push =
+        pushFactory.create(db, admin.getIdent(), PushOneCommit.SUBJECT,
+            "b.txt", "anotherContent", r.getChangeId());
+    r = push.to(git, "refs/changes/" + r.getChange().change().getId().get());
+    r.assertOkStatus();
+  }
+
+  @Test
   public void testPushForMasterWithApprovals_MissingLabel() throws GitAPIException,
       IOException {
       PushOneCommit.Result r = pushTo("refs/for/master/%l=Verify");
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java
index cc2919d..81833fe 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java
@@ -2041,7 +2041,7 @@
         @Override
         public PatchSet.Id call() throws OrmException, IOException, NoSuchChangeException {
           try {
-            if (magicBranch.edit) {
+            if (magicBranch != null && magicBranch.edit) {
               return upsertEdit();
             } else if (caller == Thread.currentThread()) {
               return insertPatchSet(db);