MergeTip: Extract null-safe factory method

Change-Id: I3cc331050732f28b5341384f729f48cfb0311131
This commit is contained in:
Dave Borowitz
2015-02-13 15:51:24 -08:00
parent da0f9f405a
commit 858e308f92
6 changed files with 19 additions and 10 deletions

View File

@@ -15,6 +15,7 @@
package com.google.gerrit.server.git; package com.google.gerrit.server.git;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.google.gerrit.common.Nullable;
import java.util.Collection; import java.util.Collection;
import java.util.Map; import java.util.Map;
@@ -23,6 +24,14 @@ import java.util.Map;
* Class describing a merge tip during merge operation. * Class describing a merge tip during merge operation.
*/ */
public class MergeTip { public class MergeTip {
public static MergeTip from(@Nullable CodeReviewCommit initial,
Collection<CodeReviewCommit> toMerge) {
if (initial == null) {
return null;
}
return new MergeTip(initial, toMerge);
}
private CodeReviewCommit branchTip; private CodeReviewCommit branchTip;
private Map<String,String> mergeResults; private Map<String,String> mergeResults;
@@ -30,7 +39,8 @@ public class MergeTip {
* @param initial Tip before the merge operation. * @param initial Tip before the merge operation.
* @param toMerge List of CodeReview commits to be merged in merge operation. * @param toMerge List of CodeReview commits to be merged in merge operation.
*/ */
public MergeTip(CodeReviewCommit initial, Collection<CodeReviewCommit> toMerge) { private MergeTip(CodeReviewCommit initial,
Collection<CodeReviewCommit> toMerge) {
this.mergeResults = Maps.newHashMap(); this.mergeResults = Maps.newHashMap();
this.branchTip = initial; this.branchTip = initial;
// Assume fast-forward merge until opposite is proven. // Assume fast-forward merge until opposite is proven.

View File

@@ -66,8 +66,7 @@ public class CherryPick extends SubmitStrategy {
@Override @Override
protected MergeTip _run(CodeReviewCommit branchTip, protected MergeTip _run(CodeReviewCommit branchTip,
Collection<CodeReviewCommit> toMerge) throws MergeException { Collection<CodeReviewCommit> toMerge) throws MergeException {
MergeTip mergeTip = branchTip != null MergeTip mergeTip = MergeTip.from(branchTip, toMerge);
? new MergeTip(branchTip, toMerge) : null;
List<CodeReviewCommit> sorted = CodeReviewCommit.ORDER.sortedCopy(toMerge); List<CodeReviewCommit> sorted = CodeReviewCommit.ORDER.sortedCopy(toMerge);
while (!sorted.isEmpty()) { while (!sorted.isEmpty()) {
CodeReviewCommit n = sorted.remove(0); CodeReviewCommit n = sorted.remove(0);
@@ -90,7 +89,7 @@ public class CherryPick extends SubmitStrategy {
private MergeTip cherryPickUnbornRoot(CodeReviewCommit n) { private MergeTip cherryPickUnbornRoot(CodeReviewCommit n) {
// The branch is unborn. Take fast-forward resolution to create the branch. // The branch is unborn. Take fast-forward resolution to create the branch.
MergeTip mergeTip = new MergeTip(n, Lists.newArrayList(n)); MergeTip mergeTip = MergeTip.from(n, Lists.newArrayList(n));
n.setStatusCode(CommitMergeStatus.CLEAN_MERGE); n.setStatusCode(CommitMergeStatus.CLEAN_MERGE);
return mergeTip; return mergeTip;
} }

View File

@@ -31,7 +31,7 @@ public class FastForwardOnly extends SubmitStrategy {
@Override @Override
protected MergeTip _run(final CodeReviewCommit branchTip, protected MergeTip _run(final CodeReviewCommit branchTip,
final Collection<CodeReviewCommit> toMerge) throws MergeException { final Collection<CodeReviewCommit> toMerge) throws MergeException {
MergeTip mergeTip = new MergeTip(branchTip, toMerge); MergeTip mergeTip = MergeTip.from(branchTip, toMerge);
List<CodeReviewCommit> sorted = args.mergeUtil.reduceToMinimalMerge( List<CodeReviewCommit> sorted = args.mergeUtil.reduceToMinimalMerge(
args.mergeSorter, toMerge); args.mergeSorter, toMerge);
final CodeReviewCommit newMergeTipCommit = final CodeReviewCommit newMergeTipCommit =

View File

@@ -35,10 +35,10 @@ public class MergeAlways extends SubmitStrategy {
if (branchTip == null) { if (branchTip == null) {
// The branch is unborn. Take a fast-forward resolution to // The branch is unborn. Take a fast-forward resolution to
// create the branch. // create the branch.
mergeTip = new MergeTip(sorted.get(0), toMerge); mergeTip = MergeTip.from(sorted.get(0), toMerge);
sorted.remove(0); sorted.remove(0);
} else { } else {
mergeTip = new MergeTip(branchTip, toMerge); mergeTip = MergeTip.from(branchTip, toMerge);
} }
while (!sorted.isEmpty()) { while (!sorted.isEmpty()) {
CodeReviewCommit mergedFrom = sorted.remove(0); CodeReviewCommit mergedFrom = sorted.remove(0);

View File

@@ -36,10 +36,10 @@ public class MergeIfNecessary extends SubmitStrategy {
if (branchTip == null) { if (branchTip == null) {
// The branch is unborn. Take a fast-forward resolution to // The branch is unborn. Take a fast-forward resolution to
// create the branch. // create the branch.
mergeTip = new MergeTip(sorted.get(0), toMerge); mergeTip = MergeTip.from(sorted.get(0), toMerge);
branchTip = sorted.remove(0); branchTip = sorted.remove(0);
} else { } else {
mergeTip = new MergeTip(branchTip, toMerge); mergeTip = MergeTip.from(branchTip, toMerge);
branchTip = branchTip =
args.mergeUtil.getFirstFastForward(branchTip, args.rw, sorted); args.mergeUtil.getFirstFastForward(branchTip, args.rw, sorted);
} }

View File

@@ -58,7 +58,7 @@ public class RebaseIfNecessary extends SubmitStrategy {
@Override @Override
protected MergeTip _run(final CodeReviewCommit branchTip, protected MergeTip _run(final CodeReviewCommit branchTip,
final Collection<CodeReviewCommit> toMerge) throws MergeException { final Collection<CodeReviewCommit> toMerge) throws MergeException {
MergeTip mergeTip = new MergeTip(branchTip, toMerge); MergeTip mergeTip = MergeTip.from(branchTip, toMerge);
List<CodeReviewCommit> sorted = sort(toMerge); List<CodeReviewCommit> sorted = sort(toMerge);
while (!sorted.isEmpty()) { while (!sorted.isEmpty()) {
CodeReviewCommit n = sorted.remove(0); CodeReviewCommit n = sorted.remove(0);