MergeTip: Extract null-safe factory method
Change-Id: I3cc331050732f28b5341384f729f48cfb0311131
This commit is contained in:
@@ -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.
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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 =
|
||||||
|
@@ -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);
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
|
Reference in New Issue
Block a user