summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaladox <thomasmulhall410@yahoo.com>2017-03-30 20:11:58 +0100
committerPaladox <thomasmulhall410@yahoo.com>2017-03-30 20:12:17 +0100
commit1bd4429f3cb2482bff5ac367f06c4170fe4091fc (patch)
treea47bf66c86c892b0ea22a94e83d0c6a61b1d2dd6
parent885c2c30947c983b7c90e98766fa0893d03279bb (diff)
parent15e9a266b3a9cb06f8ed131482409b7fc4c73278 (diff)
Merge branch 'stable-2.12' into stable-2.13
* stable-2.12: Fix the wrong order of RevWalk.isMergedInto in RebaseSorter Change-Id: Iaa6fbb0d8ba7f5d2fcf371bebdaa753eac03b57b
-rw-r--r--gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/AbstractSubmit.java42
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/git/RebaseSorter.java4
2 files changed, 44 insertions, 2 deletions
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/AbstractSubmit.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/AbstractSubmit.java
index 8ab7c2a13f..c0e6306d90 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/AbstractSubmit.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/AbstractSubmit.java
@@ -344,6 +344,48 @@ public abstract class AbstractSubmit extends AbstractDaemonTest {
assertThat(log).contains(mergeReview.getCommit());
}
+ @Test
+ public void submitMergeOfNonChangeBranchNonTip() throws Exception {
+ // Merge a branch with commits that have not been submitted as
+ // changes.
+ //
+ // MC -- merge commit (pushed for review and submitted)
+ // |\ S2 -- new stable tip (pushed directly to refs/heads/stable)
+ // M \ /
+ // | S1 -- stable (pushed directly to refs/heads/stable)
+ // | /
+ // I -- master
+ //
+ RevCommit initial = getRemoteHead(project, "master");
+ // push directly to stable to S1
+ PushOneCommit.Result s1 = pushFactory.create(
+ db, admin.getIdent(), testRepo, "new commit into stable", "stable1.txt", "")
+ .to("refs/heads/stable");
+ // move the stable tip ahead to S2
+ pushFactory.create(
+ db, admin.getIdent(), testRepo, "Tip of branch stable", "stable2.txt", "")
+ .to("refs/heads/stable");
+
+ testRepo.reset(initial);
+
+ // move the master ahead
+ PushOneCommit.Result m = pushFactory.create(
+ db, admin.getIdent(), testRepo, "Move master ahead", "master.txt", "")
+ .to("refs/heads/master");
+
+ // create merge change
+ PushOneCommit mc =
+ pushFactory.create(db, admin.getIdent(), testRepo, "The merge commit", "merge.txt", "");
+ mc.setParents(ImmutableList.of(m.getCommit(), s1.getCommit()));
+ PushOneCommit.Result mergeReview = mc.to("refs/for/master");
+ approve(mergeReview.getChangeId());
+ submit(mergeReview.getChangeId());
+
+ List<RevCommit> log = getRemoteLog();
+ assertThat(log).contains(s1.getCommit());
+ assertThat(log).contains(mergeReview.getCommit());
+ }
+
private void assertSubmitter(PushOneCommit.Result change) throws Exception {
ChangeInfo info = get(change.getChangeId(), ListChangesOption.MESSAGES);
assertThat(info.messages).isNotNull();
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/RebaseSorter.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/RebaseSorter.java
index 6448d0677b..ccf876a2f3 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/RebaseSorter.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/RebaseSorter.java
@@ -95,8 +95,8 @@ public class RebaseSorter {
mirw.reset();
mirw.markStart(commit);
for (RevCommit accepted : alreadyAccepted) {
- if (mirw.isMergedInto(mirw.parseCommit(accepted),
- mirw.parseCommit(commit))) {
+ if (mirw.isMergedInto(mirw.parseCommit(commit),
+ mirw.parseCommit(accepted))) {
return true;
}
}