summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java10
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) {