Fix fast forward rebase with rebase.autostash=true
The folder .git/rebase-merge was not removed in this case. The repository was then still in rebase state, but neither abort nor continue worked. Bug: 425742 Change-Id: I43cea6c9e5f3cef9d6b15643722fddecb40632d9
This commit is contained in:
parent
50a830f7d4
commit
3db6e05e52
|
@ -1737,6 +1737,45 @@ public void testRebaseWithAutoStashConflictOnApply() throws Exception {
|
|||
assertEquals("file1", diffs.get(0).getOldPath());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFastForwardRebaseWithAutoStash() throws Exception {
|
||||
// create file0, add and commit
|
||||
db.getConfig().setBoolean(ConfigConstants.CONFIG_REBASE_SECTION, null,
|
||||
ConfigConstants.CONFIG_KEY_AUTOSTASH, true);
|
||||
writeTrashFile("file0", "file0");
|
||||
git.add().addFilepattern("file0").call();
|
||||
git.commit().setMessage("commit0").call();
|
||||
// create file1, add and commit
|
||||
writeTrashFile(FILE1, "file1");
|
||||
git.add().addFilepattern(FILE1).call();
|
||||
RevCommit commit = git.commit().setMessage("commit1").call();
|
||||
|
||||
// create topic branch
|
||||
createBranch(commit, "refs/heads/topic");
|
||||
|
||||
// checkout master branch / modify file1, add and commit
|
||||
checkoutBranch("refs/heads/master");
|
||||
writeTrashFile(FILE1, "modified file1");
|
||||
git.add().addFilepattern(FILE1).call();
|
||||
git.commit().setMessage("commit3").call();
|
||||
|
||||
// checkout topic branch / modify file0
|
||||
checkoutBranch("refs/heads/topic");
|
||||
writeTrashFile("file0", "unstaged modified file0");
|
||||
|
||||
// rebase
|
||||
assertEquals(Status.FAST_FORWARD,
|
||||
git.rebase().setUpstream("refs/heads/master")
|
||||
.call().getStatus());
|
||||
checkFile(new File(db.getWorkTree(), "file0"),
|
||||
"unstaged modified file0");
|
||||
checkFile(new File(db.getWorkTree(), FILE1), "modified file1");
|
||||
assertEquals("[file0, mode:100644, content:file0]"
|
||||
+ "[file1, mode:100644, content:modified file1]",
|
||||
indexState(CONTENT));
|
||||
assertEquals(RepositoryState.SAFE, db.getRepositoryState());
|
||||
}
|
||||
|
||||
private List<DiffEntry> getStashedDiff() throws AmbiguousObjectException,
|
||||
IncorrectObjectTypeException, IOException, MissingObjectException {
|
||||
ObjectId stashId = db.resolve("stash@{0}");
|
||||
|
|
|
@ -281,6 +281,9 @@ public RebaseResult call() throws GitAPIException, NoHeadException,
|
|||
return RebaseResult.INTERACTIVE_PREPARED_RESULT;
|
||||
if (res != null) {
|
||||
autoStashApply();
|
||||
if (rebaseState.getDir().exists())
|
||||
FileUtils.delete(rebaseState.getDir(),
|
||||
FileUtils.RECURSIVE);
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue