diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java index 69908fcb2b..08e927f5b2 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java @@ -97,6 +97,7 @@ public class ChangeInserter extends BatchUpdate.InsertChangeOp { private Set extraCC; private Map approvals; private RequestScopePropagator requestScopePropagator; + private ReceiveCommand updateRefCommand; private boolean runHooks; private boolean sendMail; private boolean updateRef; @@ -137,6 +138,7 @@ public class ChangeInserter extends BatchUpdate.InsertChangeOp { this.reviewers = Collections.emptySet(); this.extraCC = Collections.emptySet(); this.approvals = Collections.emptyMap(); + this.updateRefCommand = null; this.runHooks = true; this.sendMail = true; this.updateRef = true; @@ -204,6 +206,10 @@ public class ChangeInserter extends BatchUpdate.InsertChangeOp { return this; } + public void setUpdateRefCommand(ReceiveCommand cmd) { + updateRefCommand = cmd; + } + public PatchSet getPatchSet() { return patchSet; } @@ -237,8 +243,12 @@ public class ChangeInserter extends BatchUpdate.InsertChangeOp { if (!updateRef) { return; } - ctx.addRefUpdate( - new ReceiveCommand(ObjectId.zeroId(), commit, patchSet.getRefName())); + if (updateRefCommand == null) { + ctx.addRefUpdate( + new ReceiveCommand(ObjectId.zeroId(), commit, patchSet.getRefName())); + } else { + ctx.addRefUpdate(updateRefCommand); + } } @Override 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 5a5da1c0df..74299fe351 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 @@ -1734,6 +1734,7 @@ public class ReceiveCommits { .setValidatePolicy(CommitValidators.Policy.NONE); cmd = new ReceiveCommand(ObjectId.zeroId(), c, ins.getPatchSet().getRefName()); + ins.setUpdateRefCommand(cmd); } CheckedFuture insertChange() throws IOException { @@ -1787,7 +1788,7 @@ public class ReceiveCommits { .setMessage(msg) .setRequestScopePropagator(requestScopePropagator) .setSendMail(true) - .setUpdateRef(false)); + .setUpdateRef(true)); if (magicBranch != null) { bu.addOp( ins.getChange().getId(),