Merge "Fix for Iff768422c, use offset 0 when going back to work tree iterator"
This commit is contained in:
commit
4e6e267b8a
|
@ -49,6 +49,7 @@
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
import java.security.MessageDigest;
|
import java.security.MessageDigest;
|
||||||
|
|
||||||
import org.eclipse.jgit.api.Git;
|
import org.eclipse.jgit.api.Git;
|
||||||
|
@ -58,6 +59,9 @@
|
||||||
import org.eclipse.jgit.dircache.DirCacheEntry;
|
import org.eclipse.jgit.dircache.DirCacheEntry;
|
||||||
import org.eclipse.jgit.dircache.DirCacheIterator;
|
import org.eclipse.jgit.dircache.DirCacheIterator;
|
||||||
import org.eclipse.jgit.dircache.DirCacheEditor.PathEdit;
|
import org.eclipse.jgit.dircache.DirCacheEditor.PathEdit;
|
||||||
|
import org.eclipse.jgit.errors.CorruptObjectException;
|
||||||
|
import org.eclipse.jgit.errors.IncorrectObjectTypeException;
|
||||||
|
import org.eclipse.jgit.errors.MissingObjectException;
|
||||||
import org.eclipse.jgit.lib.Constants;
|
import org.eclipse.jgit.lib.Constants;
|
||||||
import org.eclipse.jgit.lib.FileMode;
|
import org.eclipse.jgit.lib.FileMode;
|
||||||
import org.eclipse.jgit.lib.ObjectId;
|
import org.eclipse.jgit.lib.ObjectId;
|
||||||
|
@ -429,6 +433,43 @@ public void apply(DirCacheEntry ent) {
|
||||||
assertTrue(indexIter.idEqual(workTreeIter));
|
assertTrue(indexIter.idEqual(workTreeIter));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void idOffset() throws Exception {
|
||||||
|
Git git = new Git(db);
|
||||||
|
writeTrashFile("fileAinfsonly", "A");
|
||||||
|
File fileBinindex = writeTrashFile("fileBinindex", "B");
|
||||||
|
fsTick(fileBinindex);
|
||||||
|
git.add().addFilepattern("fileBinindex").call();
|
||||||
|
writeTrashFile("fileCinfsonly", "C");
|
||||||
|
TreeWalk tw = new TreeWalk(db);
|
||||||
|
DirCacheIterator indexIter = new DirCacheIterator(db.readDirCache());
|
||||||
|
FileTreeIterator workTreeIter = new FileTreeIterator(db);
|
||||||
|
tw.addTree(indexIter);
|
||||||
|
tw.addTree(workTreeIter);
|
||||||
|
workTreeIter.setDirCacheIterator(tw, 0);
|
||||||
|
assertEntry("d46c305e85b630558ee19cc47e73d2e5c8c64cdc", "a,", tw);
|
||||||
|
assertEntry("58ee403f98538ec02409538b3f80adf610accdec", "a,b", tw);
|
||||||
|
assertEntry("0000000000000000000000000000000000000000", "a", tw);
|
||||||
|
assertEntry("b8d30ff397626f0f1d3538d66067edf865e201d6", "a0b", tw);
|
||||||
|
// The reason for adding this test. Check that the id is correct for
|
||||||
|
// mixed
|
||||||
|
assertEntry("8c7e5a667f1b771847fe88c01c3de34413a1b220",
|
||||||
|
"fileAinfsonly", tw);
|
||||||
|
assertEntry("7371f47a6f8bd23a8fa1a8b2a9479cdd76380e54", "fileBinindex",
|
||||||
|
tw);
|
||||||
|
assertEntry("96d80cd6c4e7158dbebd0849f4fb7ce513e5828c",
|
||||||
|
"fileCinfsonly", tw);
|
||||||
|
assertFalse(tw.next());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assertEntry(String sha1string, String path, TreeWalk tw)
|
||||||
|
throws MissingObjectException, IncorrectObjectTypeException,
|
||||||
|
CorruptObjectException, IOException {
|
||||||
|
assertTrue(tw.next());
|
||||||
|
assertEquals(path, tw.getPathString());
|
||||||
|
assertEquals(sha1string, tw.getObjectId(1).getName() /* 1=filetree here */);
|
||||||
|
}
|
||||||
|
|
||||||
private static String nameOf(final AbstractTreeIterator i) {
|
private static String nameOf(final AbstractTreeIterator i) {
|
||||||
return RawParseUtils.decode(Constants.CHARSET, i.path, 0, i.pathLen);
|
return RawParseUtils.decode(Constants.CHARSET, i.path, 0, i.pathLen);
|
||||||
}
|
}
|
||||||
|
|
|
@ -243,6 +243,8 @@ public byte[] idBuffer() {
|
||||||
return contentId = i.idBuffer();
|
return contentId = i.idBuffer();
|
||||||
}
|
}
|
||||||
contentIdOffset = 0;
|
contentIdOffset = 0;
|
||||||
|
} else {
|
||||||
|
contentIdOffset = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
switch (mode & FileMode.TYPE_MASK) {
|
switch (mode & FileMode.TYPE_MASK) {
|
||||||
|
|
Loading…
Reference in New Issue