Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java9
1 files changed, 7 insertions, 2 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java
index 03d2b8e9c8..f52150457d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheCheckout.java
@@ -273,8 +273,13 @@ public class DirCacheCheckout {
void processEntry(CanonicalTreeParser m, DirCacheBuildIterator i,
WorkingTreeIterator f) {
if (m != null) {
- update(m.getEntryPathString(), m.getEntryObjectId(),
- m.getEntryFileMode());
+ if (i == null || f == null || !m.idEqual(i)
+ || f.isModified(i.getDirCacheEntry(), true,
+ config_filemode(), repo.getFS())) {
+ update(m.getEntryPathString(), m.getEntryObjectId(),
+ m.getEntryFileMode());
+ } else
+ keep(i.getDirCacheEntry());
} else {
if (f != null) {
if (walk.isDirectoryFileConflict()) {

Back to the top