示例#1
0
        public virtual void Test006_addDeepTree()
        {
            Tree t = new Tree(db);
            Tree e = t.AddTree("e");

            NUnit.Framework.Assert.IsNotNull(e, "have e");
            NUnit.Framework.Assert.IsTrue(e.GetParent() == t, "e.parent == t");
            Tree f = t.AddTree("f");

            NUnit.Framework.Assert.IsNotNull(f, "have f");
            NUnit.Framework.Assert.IsTrue(f.GetParent() == t, "f.parent == t");
            Tree g = f.AddTree("g");

            NUnit.Framework.Assert.IsNotNull(g, "have g");
            NUnit.Framework.Assert.IsTrue(g.GetParent() == f, "g.parent == f");
            Tree h = g.AddTree("h");

            NUnit.Framework.Assert.IsNotNull(h, "have h");
            NUnit.Framework.Assert.IsTrue(h.GetParent() == g, "h.parent = g");
            h.SetId(SOME_FAKE_ID);
            NUnit.Framework.Assert.IsTrue(!h.IsModified(), "h not modified");
            g.SetId(SOME_FAKE_ID);
            NUnit.Framework.Assert.IsTrue(!g.IsModified(), "g not modified");
            f.SetId(SOME_FAKE_ID);
            NUnit.Framework.Assert.IsTrue(!f.IsModified(), "f not modified");
            e.SetId(SOME_FAKE_ID);
            NUnit.Framework.Assert.IsTrue(!e.IsModified(), "e not modified");
            t.SetId(SOME_FAKE_ID);
            NUnit.Framework.Assert.IsTrue(!t.IsModified(), "t not modified.");
            NUnit.Framework.Assert.AreEqual("f/g/h", h.GetFullName(), "full path of h ok");
            NUnit.Framework.Assert.IsTrue(t.FindTreeMember(h.GetFullName()) == h, "Can find h"
                                          );
            NUnit.Framework.Assert.IsTrue(t.FindBlobMember("f/z") == null, "Can't find f/z");
            NUnit.Framework.Assert.IsTrue(t.FindBlobMember("y/z") == null, "Can't find y/z");
            FileTreeEntry i = h.AddFile("i");

            NUnit.Framework.Assert.IsNotNull(i);
            NUnit.Framework.Assert.AreEqual("f/g/h/i", i.GetFullName(), "full path of i ok");
            NUnit.Framework.Assert.IsTrue(t.FindBlobMember(i.GetFullName()) == i, "Can find i"
                                          );
            NUnit.Framework.Assert.IsTrue(h.IsModified(), "h modified");
            NUnit.Framework.Assert.IsTrue(g.IsModified(), "g modified");
            NUnit.Framework.Assert.IsTrue(f.IsModified(), "f modified");
            NUnit.Framework.Assert.IsTrue(!e.IsModified(), "e not modified");
            NUnit.Framework.Assert.IsTrue(t.IsModified(), "t modified");
            NUnit.Framework.Assert.IsTrue(h.GetId() == null, "h no id");
            NUnit.Framework.Assert.IsTrue(g.GetId() == null, "g no id");
            NUnit.Framework.Assert.IsTrue(f.GetId() == null, "f no id");
            NUnit.Framework.Assert.IsTrue(e.GetId() != null, "e has id");
            NUnit.Framework.Assert.IsTrue(t.GetId() == null, "t no id");
        }
示例#2
0
        public virtual void TestRemoved()
        {
            WriteTrashFile("file2", "file2");
            WriteTrashFile("dir/file3", "dir/file3");
            Tree tree = new Tree(db);

            tree.AddFile("file2");
            tree.AddFile("dir/file3");
            NUnit.Framework.Assert.AreEqual(2, tree.MemberCount());
            tree.FindBlobMember("file2").SetId(ObjectId.FromString("30d67d4672d5c05833b7192cc77a79eaafb5c7ad"
                                                                   ));
            Tree tree2 = (Tree)tree.FindTreeMember("dir");

            tree2.FindBlobMember("file3").SetId(ObjectId.FromString("873fb8d667d05436d728c52b1d7a09528e6eb59b"
                                                                    ));
            tree2.SetId(InsertTree(tree2));
            tree.SetId(InsertTree(tree));
            FileTreeIterator iterator = new FileTreeIterator(db);
            IndexDiff        diff     = new IndexDiff(db, tree.GetId(), iterator);

            diff.Diff();
            NUnit.Framework.Assert.AreEqual(2, diff.GetRemoved().Count);
            NUnit.Framework.Assert.IsTrue(diff.GetRemoved().Contains("file2"));
            NUnit.Framework.Assert.IsTrue(diff.GetRemoved().Contains("dir/file3"));
            NUnit.Framework.Assert.AreEqual(0, diff.GetChanged().Count);
            NUnit.Framework.Assert.AreEqual(0, diff.GetModified().Count);
            NUnit.Framework.Assert.AreEqual(0, diff.GetAdded().Count);
        }
示例#3
0
        public virtual void Test002_addFile()
        {
            Tree t = new Tree(db);

            t.SetId(SOME_FAKE_ID);
            NUnit.Framework.Assert.IsTrue(t.GetId() != null, "has id");
            NUnit.Framework.Assert.IsFalse(t.IsModified(), "not modified");
            string        n = "bob";
            FileTreeEntry f = t.AddFile(n);

            NUnit.Framework.Assert.IsNotNull(f, "have file");
            NUnit.Framework.Assert.AreEqual(n, f.GetName(), "name matches");
            NUnit.Framework.Assert.AreEqual(f.GetName(), Sharpen.Runtime.GetStringForBytes(f.
                                                                                           GetNameUTF8(), "UTF-8"), "name matches");
            NUnit.Framework.Assert.AreEqual(n, f.GetFullName(), "full name matches");
            NUnit.Framework.Assert.IsTrue(f.GetId() == null, "no id");
            NUnit.Framework.Assert.IsTrue(t.IsModified(), "is modified");
            NUnit.Framework.Assert.IsTrue(t.GetId() == null, "has no id");
            NUnit.Framework.Assert.IsTrue(t.FindBlobMember(f.GetName()) == f, "found bob");
            TreeEntry[] i = t.Members();
            NUnit.Framework.Assert.IsNotNull(i, "members array not null");
            NUnit.Framework.Assert.IsTrue(i != null && i.Length > 0, "iterator is not empty");
            NUnit.Framework.Assert.IsTrue(i != null && i[0] == f, "iterator returns file");
            NUnit.Framework.Assert.IsTrue(i != null && i.Length == 1, "iterator is empty");
        }
示例#4
0
		public virtual void TestRules1thru3_NoIndexEntry()
		{
			Tree head = new Tree(db);
			head = BuildTree(Mk("foo"));
			ObjectId objectId = head.FindBlobMember("foo").GetId();
			Tree merge = new Tree(db);
			PrescanTwoTrees(head, merge);
			NUnit.Framework.Assert.IsTrue(GetRemoved().Contains("foo"));
			PrescanTwoTrees(merge, head);
			NUnit.Framework.Assert.AreEqual(objectId, GetUpdated().Get("foo"));
			merge = BuildTree(Mkmap("foo", "a"));
			ObjectId anotherId = merge.FindBlobMember("foo").GetId();
			PrescanTwoTrees(head, merge);
			NUnit.Framework.Assert.AreEqual(anotherId, GetUpdated().Get("foo"));
		}
示例#5
0
        public virtual void TestRules1thru3_NoIndexEntry()
        {
            Tree head = new Tree(db);

            head = BuildTree(Mk("foo"));
            ObjectId objectId = head.FindBlobMember("foo").GetId();
            Tree     merge    = new Tree(db);

            PrescanTwoTrees(head, merge);
            NUnit.Framework.Assert.IsTrue(GetRemoved().Contains("foo"));
            PrescanTwoTrees(merge, head);
            NUnit.Framework.Assert.AreEqual(objectId, GetUpdated().Get("foo"));
            merge = BuildTree(Mkmap("foo", "a"));
            ObjectId anotherId = merge.FindBlobMember("foo").GetId();

            PrescanTwoTrees(head, merge);
            NUnit.Framework.Assert.AreEqual(anotherId, GetUpdated().Get("foo"));
        }
示例#6
0
        public virtual void Test001_createEmpty()
        {
            Tree t = new Tree(db);

            NUnit.Framework.Assert.IsTrue(t.IsLoaded(), "isLoaded");
            NUnit.Framework.Assert.IsTrue(t.IsModified(), "isModified");
            NUnit.Framework.Assert.IsTrue(t.GetParent() == null, "no parent");
            NUnit.Framework.Assert.IsTrue(t.IsRoot(), "isRoot");
            NUnit.Framework.Assert.IsTrue(t.GetName() == null, "no name");
            NUnit.Framework.Assert.IsTrue(t.GetNameUTF8() == null, "no nameUTF8");
            NUnit.Framework.Assert.IsTrue(t.Members() != null, "has entries array");
            NUnit.Framework.Assert.AreEqual(0, t.Members().Length, "entries is empty");
            NUnit.Framework.Assert.AreEqual(string.Empty, t.GetFullName(), "full name is empty"
                                            );
            NUnit.Framework.Assert.IsTrue(t.GetId() == null, "no id");
            NUnit.Framework.Assert.IsTrue(t.GetRepository() == db, "database is r");
            NUnit.Framework.Assert.IsTrue(t.FindTreeMember("foo") == null, "no foo child");
            NUnit.Framework.Assert.IsTrue(t.FindBlobMember("foo") == null, "no foo child");
        }
		/// <exception cref="System.IO.IOException"></exception>
		private bool HasParentBlob(Tree t, string name)
		{
			if (name.IndexOf("/") == -1)
			{
				return false;
			}
			string parent = Sharpen.Runtime.Substring(name, 0, name.LastIndexOf("/"));
			if (t.FindBlobMember(parent) != null)
			{
				return true;
			}
			return HasParentBlob(t, parent);
		}
示例#8
0
		public virtual void Test006_addDeepTree()
		{
			Tree t = new Tree(db);
			Tree e = t.AddTree("e");
			NUnit.Framework.Assert.IsNotNull(e, "have e");
			NUnit.Framework.Assert.IsTrue(e.GetParent() == t, "e.parent == t");
			Tree f = t.AddTree("f");
			NUnit.Framework.Assert.IsNotNull(f, "have f");
			NUnit.Framework.Assert.IsTrue(f.GetParent() == t, "f.parent == t");
			Tree g = f.AddTree("g");
			NUnit.Framework.Assert.IsNotNull(g, "have g");
			NUnit.Framework.Assert.IsTrue(g.GetParent() == f, "g.parent == f");
			Tree h = g.AddTree("h");
			NUnit.Framework.Assert.IsNotNull(h, "have h");
			NUnit.Framework.Assert.IsTrue(h.GetParent() == g, "h.parent = g");
			h.SetId(SOME_FAKE_ID);
			NUnit.Framework.Assert.IsTrue(!h.IsModified(), "h not modified");
			g.SetId(SOME_FAKE_ID);
			NUnit.Framework.Assert.IsTrue(!g.IsModified(), "g not modified");
			f.SetId(SOME_FAKE_ID);
			NUnit.Framework.Assert.IsTrue(!f.IsModified(), "f not modified");
			e.SetId(SOME_FAKE_ID);
			NUnit.Framework.Assert.IsTrue(!e.IsModified(), "e not modified");
			t.SetId(SOME_FAKE_ID);
			NUnit.Framework.Assert.IsTrue(!t.IsModified(), "t not modified.");
			NUnit.Framework.Assert.AreEqual("f/g/h", h.GetFullName(), "full path of h ok");
			NUnit.Framework.Assert.IsTrue(t.FindTreeMember(h.GetFullName()) == h, "Can find h"
				);
			NUnit.Framework.Assert.IsTrue(t.FindBlobMember("f/z") == null, "Can't find f/z");
			NUnit.Framework.Assert.IsTrue(t.FindBlobMember("y/z") == null, "Can't find y/z");
			FileTreeEntry i = h.AddFile("i");
			NUnit.Framework.Assert.IsNotNull(i);
			NUnit.Framework.Assert.AreEqual("f/g/h/i", i.GetFullName(), "full path of i ok");
			NUnit.Framework.Assert.IsTrue(t.FindBlobMember(i.GetFullName()) == i, "Can find i"
				);
			NUnit.Framework.Assert.IsTrue(h.IsModified(), "h modified");
			NUnit.Framework.Assert.IsTrue(g.IsModified(), "g modified");
			NUnit.Framework.Assert.IsTrue(f.IsModified(), "f modified");
			NUnit.Framework.Assert.IsTrue(!e.IsModified(), "e not modified");
			NUnit.Framework.Assert.IsTrue(t.IsModified(), "t modified");
			NUnit.Framework.Assert.IsTrue(h.GetId() == null, "h no id");
			NUnit.Framework.Assert.IsTrue(g.GetId() == null, "g no id");
			NUnit.Framework.Assert.IsTrue(f.GetId() == null, "f no id");
			NUnit.Framework.Assert.IsTrue(e.GetId() != null, "e has id");
			NUnit.Framework.Assert.IsTrue(t.GetId() == null, "t no id");
		}
示例#9
0
		public virtual void Test002_addFile()
		{
			Tree t = new Tree(db);
			t.SetId(SOME_FAKE_ID);
			NUnit.Framework.Assert.IsTrue(t.GetId() != null, "has id");
			NUnit.Framework.Assert.IsFalse(t.IsModified(), "not modified");
			string n = "bob";
			FileTreeEntry f = t.AddFile(n);
			NUnit.Framework.Assert.IsNotNull(f, "have file");
			NUnit.Framework.Assert.AreEqual(n, f.GetName(), "name matches");
			NUnit.Framework.Assert.AreEqual(f.GetName(), Sharpen.Runtime.GetStringForBytes(f.
				GetNameUTF8(), "UTF-8"), "name matches");
			NUnit.Framework.Assert.AreEqual(n, f.GetFullName(), "full name matches");
			NUnit.Framework.Assert.IsTrue(f.GetId() == null, "no id");
			NUnit.Framework.Assert.IsTrue(t.IsModified(), "is modified");
			NUnit.Framework.Assert.IsTrue(t.GetId() == null, "has no id");
			NUnit.Framework.Assert.IsTrue(t.FindBlobMember(f.GetName()) == f, "found bob");
			TreeEntry[] i = t.Members();
			NUnit.Framework.Assert.IsNotNull(i, "members array not null");
			NUnit.Framework.Assert.IsTrue(i != null && i.Length > 0, "iterator is not empty");
			NUnit.Framework.Assert.IsTrue(i != null && i[0] == f, "iterator returns file");
			NUnit.Framework.Assert.IsTrue(i != null && i.Length == 1, "iterator is empty");
		}
示例#10
0
		public virtual void Test001_createEmpty()
		{
			Tree t = new Tree(db);
			NUnit.Framework.Assert.IsTrue(t.IsLoaded(), "isLoaded");
			NUnit.Framework.Assert.IsTrue(t.IsModified(), "isModified");
			NUnit.Framework.Assert.IsTrue(t.GetParent() == null, "no parent");
			NUnit.Framework.Assert.IsTrue(t.IsRoot(), "isRoot");
			NUnit.Framework.Assert.IsTrue(t.GetName() == null, "no name");
			NUnit.Framework.Assert.IsTrue(t.GetNameUTF8() == null, "no nameUTF8");
			NUnit.Framework.Assert.IsTrue(t.Members() != null, "has entries array");
			NUnit.Framework.Assert.AreEqual(0, t.Members().Length, "entries is empty");
			NUnit.Framework.Assert.AreEqual(string.Empty, t.GetFullName(), "full name is empty"
				);
			NUnit.Framework.Assert.IsTrue(t.GetId() == null, "no id");
			NUnit.Framework.Assert.IsTrue(t.GetRepository() == db, "database is r");
			NUnit.Framework.Assert.IsTrue(t.FindTreeMember("foo") == null, "no foo child");
			NUnit.Framework.Assert.IsTrue(t.FindBlobMember("foo") == null, "no foo child");
		}
示例#11
0
 public virtual void TestRemoved()
 {
     WriteTrashFile("file2", "file2");
     WriteTrashFile("dir/file3", "dir/file3");
     Tree tree = new Tree(db);
     tree.AddFile("file2");
     tree.AddFile("dir/file3");
     NUnit.Framework.Assert.AreEqual(2, tree.MemberCount());
     tree.FindBlobMember("file2").SetId(ObjectId.FromString("30d67d4672d5c05833b7192cc77a79eaafb5c7ad"
         ));
     Tree tree2 = (Tree)tree.FindTreeMember("dir");
     tree2.FindBlobMember("file3").SetId(ObjectId.FromString("873fb8d667d05436d728c52b1d7a09528e6eb59b"
         ));
     tree2.SetId(InsertTree(tree2));
     tree.SetId(InsertTree(tree));
     FileTreeIterator iterator = new FileTreeIterator(db);
     IndexDiff diff = new IndexDiff(db, tree.GetId(), iterator);
     diff.Diff();
     NUnit.Framework.Assert.AreEqual(2, diff.GetRemoved().Count);
     NUnit.Framework.Assert.IsTrue(diff.GetRemoved().Contains("file2"));
     NUnit.Framework.Assert.IsTrue(diff.GetRemoved().Contains("dir/file3"));
     NUnit.Framework.Assert.AreEqual(0, diff.GetChanged().Count);
     NUnit.Framework.Assert.AreEqual(0, diff.GetModified().Count);
     NUnit.Framework.Assert.AreEqual(0, diff.GetAdded().Count);
     NUnit.Framework.CollectionAssert.AreEquivalent(Collections<string>.EMPTY_SET, diff.GetUntrackedFolders()
         );
 }
        /// <summary>
        /// Requires absolute path
        /// </summary>
        /// <param name="fileName"></param>
        public void UnStageFile(string fileName)
        {
            if (!this.HasGitRepository) return;

            var fileNameRel = GetRelativeFileName(fileName);
            var head = repository.Resolve(Constants.HEAD);

            Tree commitTree = null;
            TreeEntry treeEntry = null;
            if (head == null)
            {
                commitTree = new Tree(repository);
            }
            else
            {
                var revTree = new RevWalk(repository).ParseTree(head);
                var treeId = revTree.Id;
                commitTree = new Tree(repository, treeId, repository.Open(treeId).GetBytes());
                if(commitTree!=null) treeEntry = commitTree.FindBlobMember(fileNameRel);
            }
            var index = repository.GetIndex();
            index.RereadIfNecessary();
            index.Remove(repository.WorkTree, fileName);

            if (treeEntry != null)
            {
                index.AddEntry(treeEntry);
            }

            index.Write();

            this.cache.Remove(GetCacheKey(fileName));
        }