IndexDiffFilter should never filter entries with stage!=0
If the IndexDiffFilter is asked whether it should include or filter out a certain path and for that path there is a dircache entry with a stage different from 0, then the filter should never filter out this entry. IndexDiffFilter is an optimized version of AnyDiffFilter and there is no case where the index contains non-0 stages but we still don't see any diff for that path. Change-Id: I25915880f304090fe90584c79bddf021231227a2 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
This commit is contained in:
parent
fd07ee54ef
commit
ddbf67e058
|
@ -134,6 +134,31 @@ public void testFileCommitted() throws Exception {
|
||||||
assertFalse(treeWalk.next());
|
assertFalse(treeWalk.next());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConflicts() throws Exception {
|
||||||
|
RevCommit initial = git.commit().setMessage("initial").call();
|
||||||
|
writeTrashFile(FILE, "master");
|
||||||
|
git.add().addFilepattern(FILE).call();
|
||||||
|
RevCommit master = git.commit().setMessage("master").call();
|
||||||
|
git.checkout().setName("refs/heads/side")
|
||||||
|
.setCreateBranch(true).setStartPoint(initial).call();
|
||||||
|
writeTrashFile(FILE, "side");
|
||||||
|
git.add().addFilepattern(FILE).call();
|
||||||
|
RevCommit side = git.commit().setMessage("side").call();
|
||||||
|
assertFalse(git.merge().include("master", master).call()
|
||||||
|
.getMergeStatus()
|
||||||
|
.isSuccessful());
|
||||||
|
assertEquals(read(FILE),
|
||||||
|
"<<<<<<< HEAD\nside\n=======\nmaster\n>>>>>>> master\n");
|
||||||
|
writeTrashFile(FILE, "master");
|
||||||
|
|
||||||
|
TreeWalk treeWalk = createTreeWalk(side);
|
||||||
|
int count = 0;
|
||||||
|
while (treeWalk.next())
|
||||||
|
count++;
|
||||||
|
assertEquals(2, count);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testFileInFolderCommitted() throws Exception {
|
public void testFileInFolderCommitted() throws Exception {
|
||||||
RevCommit commit = writeFileInFolderAndCommit();
|
RevCommit commit = writeFileInFolderAndCommit();
|
||||||
|
|
|
@ -139,9 +139,13 @@ public boolean include(TreeWalk tw) throws MissingObjectException,
|
||||||
DirCacheIterator di = tw.getTree(dirCache, DirCacheIterator.class);
|
DirCacheIterator di = tw.getTree(dirCache, DirCacheIterator.class);
|
||||||
if (di != null) {
|
if (di != null) {
|
||||||
DirCacheEntry dce = di.getDirCacheEntry();
|
DirCacheEntry dce = di.getDirCacheEntry();
|
||||||
if (dce != null)
|
if (dce != null) {
|
||||||
if (dce.isAssumeValid())
|
if (dce.isAssumeValid())
|
||||||
return false;
|
return false;
|
||||||
|
// Never filter index entries with a stage different from 0
|
||||||
|
if (dce.getStage() != 0)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!tw.isPostOrderTraversal()) {
|
if (!tw.isPostOrderTraversal()) {
|
||||||
|
|
Loading…
Reference in New Issue