summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Rosenberg <robin.rosenberg@dewire.com>2013-04-19 07:39:39 -0400
committerGerrit Code Review @ Eclipse.org <gerrit@eclipse.org>2013-04-19 07:39:39 -0400
commit1c40d83f52730379e56b0a95485aad42a52b8e04 (patch)
tree3e0ad88f6900c0b284635f254c8fd3b1080ec2c2
parentf37e25e2c3f1322b95ddc6df5fb303d9f54a779a (diff)
parentcc00feaa8d0368f4a5caefa002025e2168f71a12 (diff)
downloadjgit-1c40d83f52730379e56b0a95485aad42a52b8e04.tar.gz
jgit-1c40d83f52730379e56b0a95485aad42a52b8e04.zip
Merge "A deleted work tree file is not a conflict when merge wants to delete it"
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/api/StashApplyCommandTest.java15
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java6
2 files changed, 20 insertions, 1 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/StashApplyCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/StashApplyCommandTest.java
index 4dfac1447d..a81beb009a 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/StashApplyCommandTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/StashApplyCommandTest.java
@@ -543,4 +543,19 @@ public class StashApplyCommandTest extends RepositoryTestCase {
assertNotNull(e.getMessage());
}
}
+
+ @Test
+ public void testApplyStashWithDeletedFile() throws Exception {
+ File file = writeTrashFile("file", "content");
+ git.add().addFilepattern("file").call();
+ git.commit().setMessage("x").call();
+ file.delete();
+ git.rm().addFilepattern("file").call();
+ git.stashCreate().call();
+ file.delete();
+
+ git.stashApply().setStashRef("stash@{0}").call();
+
+ assertFalse(file.exists());
+ }
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java
index 2ea1160793..710996d2a8 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java
@@ -488,7 +488,11 @@ public class ResolveMerger extends ThreeWayMerger {
return true;
} else if (modeT == 0 && modeB != 0) {
// we want THEIRS ... but THEIRS contains the deletion of the
- // file
+ // file. Also, do not complain if the file is already deleted
+ // locally. This complements the test in isWorktreeDirty() for
+ // the same case.
+ if (tw.getTreeCount() > T_FILE && tw.getRawMode(T_FILE) == 0)
+ return true;
toBeDeleted.add(tw.getPathString());
return true;
}