diff options
author | Mathias Kinzler <mathias.kinzler@sap.com> | 2010-12-09 19:22:11 +0100 |
---|---|---|
committer | Mathias Kinzler <mathias.kinzler@sap.com> | 2010-12-09 19:22:11 +0100 |
commit | 2a7cd0086bf1bd614478c5722eac5142326e6f2b (patch) | |
tree | 3f69178bce922ebbb69c5a9307bf70dfc18a5084 /org.eclipse.jgit.test | |
parent | 1783749e169c57cef7131e1749a01ee269b89df8 (diff) | |
download | jgit-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.java | 38 |
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", |