public void testNoPostOrder() { DirCache tree = DirCache.read(db); { DirCacheBuilder b = tree.builder(); b.add(makeFile("a")); b.add(makeFile("b/c")); b.add(makeFile("b/d")); b.add(makeFile("q")); b.finish(); Assert.AreEqual(4, tree.getEntryCount()); } var tw = new GitSharp.Core.TreeWalk.TreeWalk(db); tw.reset(); tw.PostOrderTraversal = false; tw.addTree(new DirCacheIterator(tree)); assertModes("a", FileMode.RegularFile, tw); assertModes("b", FileMode.Tree, tw); Assert.IsTrue(tw.isSubtree()); Assert.IsFalse(tw.isPostChildren()); tw.enterSubtree(); assertModes("b/c", FileMode.RegularFile, tw); assertModes("b/d", FileMode.RegularFile, tw); assertModes("q", FileMode.RegularFile, tw); }
protected RevObject get(RevTree tree, string path) { var tw = new GitSharp.Core.TreeWalk.TreeWalk(db); tw.setFilter(PathFilterGroup.createFromStrings(new[] { path })); tw.reset(tree); while (tw.next()) { if (tw.isSubtree() && !path.Equals(tw.getPathString())) { tw.enterSubtree(); continue; } ObjectId entid = tw.getObjectId(0); FileMode entmode = tw.getFileMode(0); return(rw.lookupAny(entid, (int)entmode.ObjectType)); } Assert.Fail("Can't find " + path + " in tree " + tree.Name); return(null); // never reached. }