diff options
author | Shawn Pearce <sop@google.com> | 2013-09-06 13:20:58 -0700 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> | 2015-03-03 16:45:54 +0000 |
commit | f2918e9355cf25012c434a09f834d6f2f83b3083 (patch) | |
tree | 262658a82ebe1b060a4932d5da5824a8de8154a3 | |
parent | 49c544fc51f22342fa64c470fa2cdd6c531bae99 (diff) |
Avoid opening the branch twice during submit
Create only one RefUpdate object per pass through the submit loop.
For the trivial case of performing only one attempt merge there is
no need to initialize the RefUpdate twice.
Change-Id: Ib4cb4207ab84d521a6876d90d23c5f8492843326
(cherry picked from commit d9a6178f6b3d8a5cc6f360f6ab45ebf8d8eb6263)
Reviewed-by: Ismo Haataja <ismo.haataja@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
-rw-r--r-- | gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java | 12 |
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)); |