summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java97
1 files changed, 50 insertions, 47 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java
index 26fd2ea945..cec284173f 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java
@@ -936,56 +936,59 @@ public class MergeOp {
final ObjectId id = commit(mergeCommit);
final CodeReviewCommit newCommit = (CodeReviewCommit) rw.parseCommit(id);
- final Change oldChange = n.change;
-
- n.change =
- db.changes().atomicUpdate(n.change.getId(),
- new AtomicUpdate<Change>() {
- @Override
- public Change update(Change change) {
- change.nextPatchSetId();
- return change;
- }
- });
-
- final PatchSet ps = new PatchSet(n.change.currPatchSetId());
- ps.setCreatedOn(new Timestamp(System.currentTimeMillis()));
- ps.setUploader(submitAudit.getAccountId());
- ps.setRevision(new RevId(id.getName()));
- insertAncestors(ps.getId(), newCommit);
- db.patchSets().insert(Collections.singleton(ps));
-
- n.change =
- db.changes().atomicUpdate(n.change.getId(),
- new AtomicUpdate<Change>() {
- @Override
- public Change update(Change change) {
- change.setCurrentPatchSet(patchSetInfoFactory.get(newCommit,
- ps.getId()));
- return change;
- }
- });
-
- this.submitted.remove(oldChange);
- this.submitted.add(n.change);
-
- if (approvalList != null) {
- for (PatchSetApproval a : approvalList) {
- db.patchSetApprovals().insert(
- Collections.singleton(new PatchSetApproval(ps.getId(), a)));
+
+ if (submitAudit != null) {
+ final Change oldChange = n.change;
+
+ n.change =
+ db.changes().atomicUpdate(n.change.getId(),
+ new AtomicUpdate<Change>() {
+ @Override
+ public Change update(Change change) {
+ change.nextPatchSetId();
+ return change;
+ }
+ });
+
+ final PatchSet ps = new PatchSet(n.change.currPatchSetId());
+ ps.setCreatedOn(new Timestamp(System.currentTimeMillis()));
+ ps.setUploader(submitAudit.getAccountId());
+ ps.setRevision(new RevId(id.getName()));
+ insertAncestors(ps.getId(), newCommit);
+ db.patchSets().insert(Collections.singleton(ps));
+
+ n.change =
+ db.changes().atomicUpdate(n.change.getId(),
+ new AtomicUpdate<Change>() {
+ @Override
+ public Change update(Change change) {
+ change.setCurrentPatchSet(patchSetInfoFactory.get(newCommit,
+ ps.getId()));
+ return change;
+ }
+ });
+
+ this.submitted.remove(oldChange);
+ this.submitted.add(n.change);
+
+ if (approvalList != null) {
+ for (PatchSetApproval a : approvalList) {
+ db.patchSetApprovals().insert(
+ Collections.singleton(new PatchSetApproval(ps.getId(), a)));
+ }
}
- }
- final RefUpdate ru = repo.updateRef(ps.getRefName());
- ru.setExpectedOldObjectId(ObjectId.zeroId());
- ru.setNewObjectId(newCommit);
- ru.disableRefLog();
- if (ru.update(rw) != RefUpdate.Result.NEW) {
- throw new IOException(String.format(
- "Failed to create ref %s in %s: %s", ps.getRefName(),
- n.change.getDest().getParentKey().get(), ru.getResult()));
+ final RefUpdate ru = repo.updateRef(ps.getRefName());
+ ru.setExpectedOldObjectId(ObjectId.zeroId());
+ ru.setNewObjectId(newCommit);
+ ru.disableRefLog();
+ if (ru.update(rw) != RefUpdate.Result.NEW) {
+ throw new IOException(String.format(
+ "Failed to create ref %s in %s: %s", ps.getRefName(), n.change
+ .getDest().getParentKey().get(), ru.getResult()));
+ }
+ replication.fire(n.change.getProject(), ru.getName());
}
- replication.fire(n.change.getProject(), ru.getName());
newCommit.copyFrom(n);
newCommit.statusCode = CommitMergeStatus.CLEAN_PICK;