From 7ee9dc17b492c0d8cf4d085f45cef70821bcc57c Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Tue, 24 Feb 2015 11:21:27 +0900 Subject: [PATCH] ReceiveCommits: Fix NPE when pushing to refs/changes/n Change-Id: Iccf24e5262dcfe8e0fde0b63e1ef5411d7266592 --- .../gerrit/acceptance/git/AbstractPushForReview.java | 12 ++++++++++++ .../com/google/gerrit/server/git/ReceiveCommits.java | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) 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 1d21cad114..e65d51e29c 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 @@ -201,6 +201,18 @@ public abstract class AbstractPushForReview extends AbstractDaemonTest { assertThat(cr.all.get(0).value.intValue()).is(2); } + @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 { 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 cc2919d58b..81833fe715 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 @@ public class ReceiveCommits { @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);