summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java12
1 files changed, 9 insertions, 3 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 020899243f..70a1b8233d 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
@@ -267,10 +267,12 @@ public class MergeOp {
try {
openSchema();
openRepository();
- openBranch();
+
+ RefUpdate branchUpdate = openBranch();
+ boolean reopen = false;
+
final ListMultimap<SubmitType, Change> toSubmit =
validateChangeList(db.changes().submitted(destBranch).toList());
-
final ListMultimap<SubmitType, CodeReviewCommit> toMergeNextTurn =
ArrayListMultimap.create();
final List<CodeReviewCommit> potentiallyStillSubmittableOnNextRun =
@@ -280,10 +282,14 @@ public class MergeOp {
final Set<SubmitType> submitTypes =
new HashSet<Project.SubmitType>(toMerge.keySet());
for (final SubmitType submitType : submitTypes) {
- final RefUpdate branchUpdate = openBranch();
+ if (reopen) {
+ branchUpdate = openBranch();
+ }
final SubmitStrategy strategy = createStrategy(submitType);
preMerge(strategy, toMerge.get(submitType));
updateBranch(strategy, branchUpdate);
+ reopen = true;
+
updateChangeStatus(toSubmit.get(submitType));
updateSubscriptions(toSubmit.get(submitType));