diff options
author | Orgad Shaneh <orgads@gmail.com> | 2016-01-02 22:04:37 +0200 |
---|---|---|
committer | David Pursehouse <david.pursehouse@sonymobile.com> | 2016-01-13 10:28:44 +0900 |
commit | f45ace6bc360fa4b736e0665439f7d827675b4f6 (patch) | |
tree | 9590ac9ffbf3f008e6ef8513bb3124edd9e455e0 | |
parent | e406eaaa9ac307823086a37ea1c8b54dc4ccaeb2 (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.java | 6 |
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); } } |