diff options
-rw-r--r-- | gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java | 10 |
1 files changed, 9 insertions, 1 deletions
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 7d1a33a633..68f5752b3b 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 @@ -82,6 +82,7 @@ import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.ObjectReader; import org.eclipse.jgit.lib.PersonIdent; import org.eclipse.jgit.lib.Ref; +import org.eclipse.jgit.lib.RefUpdate; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.notes.NoteMap; import org.eclipse.jgit.revwalk.FooterKey; @@ -1696,7 +1697,14 @@ public class ReceiveCommits { markChangeMergedByPush(db, this); } - replication.fire(project.getNameKey(), newPatchSet.getRefName()); + final RefUpdate ru = repo.updateRef(newPatchSet.getRefName()); + ru.setNewObjectId(newCommit); + ru.disableRefLog(); + if (ru.update(rp.getRevWalk()) != RefUpdate.Result.NEW) { + throw new IOException("Failed to create ref " + newPatchSet.getRefName() + " in " + + repo.getDirectory() + ": " + ru.getResult()); + } + replication.fire(project.getNameKey(), ru.getName()); hooks.doPatchsetCreatedHook(change, newPatchSet, db); replaceProgress.update(1); if (mergedIntoRef != null) { |