summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOrgad Shaneh <orgads@gmail.com>2016-01-02 22:04:37 +0200
committerDavid Pursehouse <david.pursehouse@sonymobile.com>2016-01-13 10:28:44 +0900
commitf45ace6bc360fa4b736e0665439f7d827675b4f6 (patch)
tree9590ac9ffbf3f008e6ef8513bb3124edd9e455e0
parente406eaaa9ac307823086a37ea1c8b54dc4ccaeb2 (diff)
Use merge strategy for mergeability testing on "Rebase if Necessary" strategy
When a user pushes a chain of commits, they typically have inner dependencies, and it is likely that a commit in the middle of the chain cannot be merged by cherry-picking it alone, but if the chain is submitted in order it will be merged just fine. Applying cherry-pick for mergeability test fails for all the commits that cannot be picked without their dependencies, but this is obviously wrong when using "Rebase if Necessary", since the changes are never applied without their dependencies. With gerrit 2.12 this is even worse, since the Submit button is disabled for all the changes that are wrongfully marked as conflicted. Bug: Issue 3742 Change-Id: I6dd4d53e663bc9960c4c64b05cd011b87edcdabb
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/RebaseIfNecessary.java6
1 files changed, 4 insertions, 2 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/RebaseIfNecessary.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/RebaseIfNecessary.java
index acd32c7c50..94de8f78f0 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/RebaseIfNecessary.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/RebaseIfNecessary.java
@@ -175,8 +175,10 @@ public class RebaseIfNecessary extends SubmitStrategy {
@Override
public boolean dryRun(CodeReviewCommit mergeTip, CodeReviewCommit toMerge)
throws MergeException {
+ // Test for merge instead of cherry pick to avoid false negatives
+ // on commit chains.
return !args.mergeUtil.hasMissingDependencies(args.mergeSorter, toMerge)
- && args.mergeUtil.canCherryPick(args.mergeSorter, args.repo, mergeTip,
- args.rw, toMerge);
+ && args.mergeUtil.canMerge(args.mergeSorter, args.repo, mergeTip,
+ toMerge);
}
}