public virtual void TestCull() { RevBlob f1 = Blob("1"); RevBlob f2 = Blob("2"); RevBlob f3 = Blob("3"); RevBlob f4 = Blob("4"); RevTree ta = Tree(File("a/1", f1), File("c/3", f3)); RevCommit a = Commit(ta); RevTree tb = Tree(File("a/1", f2), File("c/3", f3)); RevCommit b1 = Commit(tb, a); RevCommit b2 = Commit(tb, b1); RevTree tc = Tree(File("a/1", f4)); RevCommit c1 = Commit(tc, a); RevCommit c2 = Commit(tc, c1); MarkStart(b2); MarkUninteresting(c2); AssertCommit(b2, objw.Next()); AssertCommit(b1, objw.Next()); NUnit.Framework.Assert.IsNull(objw.Next()); NUnit.Framework.Assert.IsTrue(a.Has(RevFlag.UNINTERESTING)); NUnit.Framework.Assert.IsTrue(ta.Has(RevFlag.UNINTERESTING)); NUnit.Framework.Assert.IsTrue(f1.Has(RevFlag.UNINTERESTING)); NUnit.Framework.Assert.IsTrue(f3.Has(RevFlag.UNINTERESTING)); NUnit.Framework.Assert.AreSame(tb, objw.NextObject()); NUnit.Framework.Assert.AreSame(Get(tb, "a"), objw.NextObject()); NUnit.Framework.Assert.AreSame(f2, objw.NextObject()); NUnit.Framework.Assert.IsNull(objw.NextObject()); }
/// <exception cref="System.IO.IOException"></exception> private void MarkTreeComplete(RevTree tree) { if (tree.Has(COMPLETE)) { return; } tree.Add(COMPLETE); treeWalk.Reset(tree); while (treeWalk.Next()) { FileMode mode = treeWalk.GetFileMode(0); int sType = mode.GetObjectType(); switch (sType) { case Constants.OBJ_BLOB: { treeWalk.GetObjectId(idBuffer, 0); revWalk.LookupAny(idBuffer, sType).Add(COMPLETE); continue; goto case Constants.OBJ_TREE; } case Constants.OBJ_TREE: { treeWalk.GetObjectId(idBuffer, 0); RevObject o = revWalk.LookupAny(idBuffer, sType); if (!o.Has(COMPLETE)) { o.Add(COMPLETE); treeWalk.EnterSubtree(); } continue; goto default; } default: { if (FileMode.GITLINK.Equals(mode)) { continue; } treeWalk.GetObjectId(idBuffer, 0); throw new CorruptObjectException(MessageFormat.Format(JGitText.Get().corruptObjectInvalidMode3 , mode, idBuffer.Name, treeWalk.PathString, tree.Name)); } } } }