git.add().addFilepattern(path).call();
String path2 = "file2";
writeTrashFile(path2, "content");
- git.add().addFilepattern(path2).call();
+ String path3 = "file3";
+ writeTrashFile(path3, "some content");
+ git.add().addFilepattern(path2).addFilepattern(path3).call();
git.commit().setMessage("commit").call();
assumeUnchanged(path2);
+ assumeUnchanged(path3);
writeTrashFile(path, "more content");
- writeTrashFile(path2, "more content");
+ deleteTrashFile(path3);
FileTreeIterator iterator = new FileTreeIterator(db);
IndexDiff diff = new IndexDiff(db, Constants.HEAD, iterator);
diff.diff();
- assertEquals(1, diff.getAssumeUnchanged().size());
+ assertEquals(2, diff.getAssumeUnchanged().size());
assertEquals(1, diff.getModified().size());
assertEquals(0, diff.getChanged().size());
assertTrue(diff.getAssumeUnchanged().contains("file2"));
+ assertTrue(diff.getAssumeUnchanged().contains("file3"));
assertTrue(diff.getModified().contains("file"));
git.add().addFilepattern(".").call();
iterator = new FileTreeIterator(db);
diff = new IndexDiff(db, Constants.HEAD, iterator);
diff.diff();
- assertEquals(1, diff.getAssumeUnchanged().size());
+ assertEquals(2, diff.getAssumeUnchanged().size());
assertEquals(0, diff.getModified().size());
assertEquals(1, diff.getChanged().size());
assertTrue(diff.getAssumeUnchanged().contains("file2"));
+ assertTrue(diff.getAssumeUnchanged().contains("file3"));
assertTrue(diff.getChanged().contains("file"));
assertEquals(Collections.EMPTY_SET, diff.getUntrackedFolders());
}
import java.util.List;
import java.util.Set;
+import org.eclipse.jgit.dircache.DirCacheEntry;
import org.eclipse.jgit.dircache.DirCacheIterator;
import org.eclipse.jgit.errors.IncorrectObjectTypeException;
import org.eclipse.jgit.errors.MissingObjectException;
final int wm = tw.getRawMode(workingTree);
String path = tw.getPathString();
+ DirCacheIterator di = tw.getTree(dirCache, DirCacheIterator.class);
+ if (di != null) {
+ DirCacheEntry dce = di.getDirCacheEntry();
+ if (dce != null)
+ if (dce.isAssumeValid())
+ return false;
+ }
+
if (!tw.isPostOrderTraversal()) {
// detect untracked Folders
// Whenever we enter a folder in the workingtree assume it will
// it.
for (int i = 0; i < cnt; i++) {
int rmode = tw.getRawMode(i);
- if (i != workingTree && rmode != 0
+ if (i != workingTree && rmode != FileMode.TYPE_MISSING
&& FileMode.TREE.equals(rmode)) {
untrackedParentFolders.clear();
break;
// other tree.
final int dm = tw.getRawMode(dirCache);
WorkingTreeIterator wi = workingTree(tw);
- if (dm == 0) {
+ if (dm == FileMode.TYPE_MISSING) {
if (honorIgnores && wi.isEntryIgnored()) {
ignoredPaths.add(wi.getEntryPathString());
int i = 0;
for (; i < cnt; i++) {
if (i == dirCache || i == workingTree)
continue;
- if (tw.getRawMode(i) != 0)
+ if (tw.getRawMode(i) != FileMode.TYPE_MISSING)
break;
}
// Only one chance left to detect a diff: between index and working
// tree. Make use of the WorkingTreeIterator#isModified() method to
// avoid computing SHA1 on filesystem content if not really needed.
- DirCacheIterator di = tw.getTree(dirCache, DirCacheIterator.class);
return wi.isModified(di.getDirCacheEntry(), true);
}