aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test
diff options
context:
space:
mode:
authorMathias Kinzler <mathias.kinzler@sap.com>2010-12-09 19:22:11 +0100
committerMathias Kinzler <mathias.kinzler@sap.com>2010-12-09 19:22:11 +0100
commit2a7cd0086bf1bd614478c5722eac5142326e6f2b (patch)
tree3f69178bce922ebbb69c5a9307bf70dfc18a5084 /org.eclipse.jgit.test
parent1783749e169c57cef7131e1749a01ee269b89df8 (diff)
downloadjgit-2a7cd0086bf1bd614478c5722eac5142326e6f2b.tar.gz
jgit-2a7cd0086bf1bd614478c5722eac5142326e6f2b.zip
Rebase: fix wrong update if original HEAD after Merge+Skip
Rebase would update the original HEAD to the wrong commit when "skipping" the last commit after a merged commit. Includes a test for the specific situation. Change-Id: I087314b1834a3f11a4561f04ca5c21411d54d993 Signed-off-by: Mathias Kinzler <mathias.kinzler@sap.com>
Diffstat (limited to 'org.eclipse.jgit.test')
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RebaseCommandTest.java38
1 files changed, 38 insertions, 0 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RebaseCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RebaseCommandTest.java
index 35b05e7195..dd812ee81a 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RebaseCommandTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RebaseCommandTest.java
@@ -499,6 +499,44 @@ public class RebaseCommandTest extends RepositoryTestCase {
assertEquals(RepositoryState.SAFE, db.getRepositoryState());
}
+ public void testMergeFirstStopOnLastConflictAndSkip() throws Exception {
+ // create file1 on master
+ RevCommit firstInMaster = writeFileAndCommit(FILE1, "Add file1", "1",
+ "2", "3");
+ // change in master
+ writeFileAndCommit(FILE1, "change file1 in master", "1master", "2", "3");
+
+ checkFile(FILE1, "1master", "2", "3");
+ // create a topic branch based on the first commit
+ createBranch(firstInMaster, "refs/heads/topic");
+ checkoutBranch("refs/heads/topic");
+ // we have the old content again
+ checkFile(FILE1, "1", "2", "3");
+
+ // add a line (conflicting)
+ writeFileAndCommit(FILE1, "add a line to file1 in topic", "1topic",
+ "2", "3", "4topic");
+
+ // change first line (conflicting again)
+ writeFileAndCommit(FILE1,
+ "change file1 in topic\n\nThis is conflicting", "1topicagain",
+ "2", "3", "4topic");
+
+ RebaseResult res = git.rebase().setUpstream("refs/heads/master").call();
+ assertEquals(Status.STOPPED, res.getStatus());
+
+ writeFileAndAdd(FILE1, "merged");
+
+ res = git.rebase().setOperation(Operation.CONTINUE).call();
+ assertEquals(Status.STOPPED, res.getStatus());
+
+ res = git.rebase().setOperation(Operation.SKIP).call();
+ assertNotNull(res);
+ assertEquals(Status.OK, res.getStatus());
+ assertEquals(RepositoryState.SAFE, db.getRepositoryState());
+ checkFile(FILE1, "merged");
+ }
+
public void testStopOnConflictAndSkipNoConflict() throws Exception {
// create file1 on master
RevCommit firstInMaster = writeFileAndCommit(FILE1, "Add file1", "1",