예제 #1
0
        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());
        }
예제 #2
0
		/// <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));
					}
				}
			}
		}