public virtual void TestModified() { GitIndex index = new GitIndex(db); index.Add(trash, WriteTrashFile("file2", "file2")); index.Add(trash, WriteTrashFile("dir/file3", "dir/file3")); index.Write(); WriteTrashFile("dir/file3", "changed"); Tree tree = new Tree(db); tree.AddFile("file2").SetId(ObjectId.FromString("0123456789012345678901234567890123456789" )); tree.AddFile("dir/file3").SetId(ObjectId.FromString("0123456789012345678901234567890123456789" )); NUnit.Framework.Assert.AreEqual(2, tree.MemberCount()); Tree tree2 = (Tree)tree.FindTreeMember("dir"); 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.GetChanged().Count); NUnit.Framework.Assert.IsTrue(diff.GetChanged().Contains("file2")); NUnit.Framework.Assert.IsTrue(diff.GetChanged().Contains("dir/file3")); NUnit.Framework.Assert.AreEqual(1, diff.GetModified().Count); NUnit.Framework.Assert.IsTrue(diff.GetModified().Contains("dir/file3")); NUnit.Framework.Assert.AreEqual(0, diff.GetAdded().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetRemoved().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetMissing().Count); }
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); }
public virtual void TestUnchangedSimple() { GitIndex index = new GitIndex(db); index.Add(trash, WriteTrashFile("a.b", "a.b")); index.Add(trash, WriteTrashFile("a.c", "a.c")); index.Add(trash, WriteTrashFile("a=c", "a=c")); index.Add(trash, WriteTrashFile("a=d", "a=d")); index.Write(); Tree tree = new Tree(db); // got the hash id'd from the data using echo -n a.b|git hash-object -t blob --stdin tree.AddFile("a.b").SetId(ObjectId.FromString("f6f28df96c2b40c951164286e08be7c38ec74851" )); tree.AddFile("a.c").SetId(ObjectId.FromString("6bc0e647512d2a0bef4f26111e484dc87df7f5ca" )); tree.AddFile("a=c").SetId(ObjectId.FromString("06022365ddbd7fb126761319633bf73517770714" )); tree.AddFile("a=d").SetId(ObjectId.FromString("fa6414df3da87840700e9eeb7fc261dd77ccd5c2" )); tree.SetId(InsertTree(tree)); FileTreeIterator iterator = new FileTreeIterator(db); IndexDiff diff = new IndexDiff(db, tree.GetId(), iterator); diff.Diff(); NUnit.Framework.Assert.AreEqual(0, diff.GetChanged().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetAdded().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetRemoved().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetMissing().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetModified().Count); }
public virtual void TestModified() { WriteTrashFile("file2", "file2"); WriteTrashFile("dir/file3", "dir/file3"); Git git = new Git(db); git.Add().AddFilepattern("file2").AddFilepattern("dir/file3").Call(); WriteTrashFile("dir/file3", "changed"); Tree tree = new Tree(db); tree.AddFile("file2").SetId(ObjectId.FromString("0123456789012345678901234567890123456789" )); tree.AddFile("dir/file3").SetId(ObjectId.FromString("0123456789012345678901234567890123456789" )); NUnit.Framework.Assert.AreEqual(2, tree.MemberCount()); Tree tree2 = (Tree)tree.FindTreeMember("dir"); 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.GetChanged().Count); NUnit.Framework.Assert.IsTrue(diff.GetChanged().Contains("file2")); NUnit.Framework.Assert.IsTrue(diff.GetChanged().Contains("dir/file3")); NUnit.Framework.Assert.AreEqual(1, diff.GetModified().Count); NUnit.Framework.Assert.IsTrue(diff.GetModified().Contains("dir/file3")); NUnit.Framework.Assert.AreEqual(0, diff.GetAdded().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetRemoved().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetMissing().Count); NUnit.Framework.Assert.AreEqual(Collections <string> .EMPTY_SET, diff.GetUntrackedFolders() ); }
public virtual void TestBoth() { GitIndex index = new GitIndex(db); Tree tree = new Tree(db); index.Add(trash, WriteTrashFile("a", "a")); tree.AddFile("b/b"); index.Add(trash, WriteTrashFile("c", "c")); tree.AddFile("c"); new IndexTreeWalker(index, tree, trash, new IndexTreeWalkerTest.TestIndexTreeVisitor (this)).Walk(); NUnit.Framework.Assert.IsTrue(indexOnlyEntriesVisited.Contains("a")); NUnit.Framework.Assert.IsTrue(treeOnlyEntriesVisited.Contains("b/b")); NUnit.Framework.Assert.IsTrue(bothVisited.Contains("c")); }
/// <exception cref="System.IO.IOException"></exception> private Tree BuildTree(Dictionary <string, string> headEntries) { Tree tree = new Tree(db); if (headEntries == null) { return(tree); } FileTreeEntry fileEntry; Tree parent; ObjectInserter oi = db.NewObjectInserter(); try { foreach (KeyValuePair <string, string> e in headEntries.EntrySet()) { fileEntry = tree.AddFile(e.Key); fileEntry.SetId(GenSha1(e.Value)); parent = fileEntry.GetParent(); while (parent != null) { parent.SetId(oi.Insert(Constants.OBJ_TREE, parent.Format())); parent = parent.GetParent(); } } oi.Flush(); } finally { oi.Release(); } return(tree); }
public virtual void Test008_SubtreeInternalSorting() { Tree t = new Tree(db); FileTreeEntry e0 = t.AddFile("a-b"); FileTreeEntry e1 = t.AddFile("a-"); FileTreeEntry e2 = t.AddFile("a=b"); Tree e3 = t.AddTree("a"); FileTreeEntry e4 = t.AddFile("a="); TreeEntry[] ents = t.Members(); NUnit.Framework.Assert.AreSame(e1, ents[0]); NUnit.Framework.Assert.AreSame(e0, ents[1]); NUnit.Framework.Assert.AreSame(e3, ents[2]); NUnit.Framework.Assert.AreSame(e4, ents[3]); NUnit.Framework.Assert.AreSame(e2, ents[4]); }
public virtual void Test007_manyFileLookup() { Tree t = new Tree(db); IList <FileTreeEntry> files = new AList <FileTreeEntry>(26 * 26); for (char level1 = 'a'; level1 <= 'z'; level1++) { for (char level2 = 'a'; level2 <= 'z'; level2++) { string n = "." + level1 + level2 + "9"; FileTreeEntry f = t.AddFile(n); NUnit.Framework.Assert.IsNotNull(f, "File " + n + " added."); NUnit.Framework.Assert.AreEqual(n, f.GetName()); files.AddItem(f); } } NUnit.Framework.Assert.AreEqual(files.Count, t.MemberCount()); TreeEntry[] ents = t.Members(); NUnit.Framework.Assert.IsNotNull(ents); NUnit.Framework.Assert.AreEqual(files.Count, ents.Length); for (int k = 0; k < ents.Length; k++) { NUnit.Framework.Assert.IsTrue(files[k] == ents[k], "File " + files[k].GetName() + " is at " + k + "."); } }
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"); }
public virtual void TestSimpleF1() { Tree tree = new Tree(db); tree.AddFile("x"); TreeIterator i = MakeIterator(tree); NUnit.Framework.Assert.IsTrue(i.HasNext()); NUnit.Framework.Assert.AreEqual("x", i.Next().GetName()); }
public virtual void Test005_addRecursiveFile() { Tree t = new Tree(db); FileTreeEntry f = t.AddFile("a/b/c"); NUnit.Framework.Assert.IsNotNull(f, "created f"); NUnit.Framework.Assert.AreEqual("c", f.GetName()); NUnit.Framework.Assert.AreEqual("b", f.GetParent().GetName()); NUnit.Framework.Assert.AreEqual("a", f.GetParent().GetParent().GetName()); NUnit.Framework.Assert.IsTrue(t == f.GetParent().GetParent().GetParent(), "t is great-grandparent" ); }
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"); }
public virtual void TestUnchangedComplex() { Git git = new Git(db); WriteTrashFile("a.b", "a.b"); WriteTrashFile("a.c", "a.c"); WriteTrashFile("a/b.b/b", "a/b.b/b"); WriteTrashFile("a/b", "a/b"); WriteTrashFile("a/c", "a/c"); WriteTrashFile("a=c", "a=c"); WriteTrashFile("a=d", "a=d"); git.Add().AddFilepattern("a.b").AddFilepattern("a.c").AddFilepattern("a/b.b/b").AddFilepattern ("a/b").AddFilepattern("a/c").AddFilepattern("a=c").AddFilepattern("a=d").Call(); Tree tree = new Tree(db); // got the hash id'd from the data using echo -n a.b|git hash-object -t blob --stdin tree.AddFile("a.b").SetId(ObjectId.FromString("f6f28df96c2b40c951164286e08be7c38ec74851" )); tree.AddFile("a.c").SetId(ObjectId.FromString("6bc0e647512d2a0bef4f26111e484dc87df7f5ca" )); tree.AddFile("a/b.b/b").SetId(ObjectId.FromString("8d840bd4e2f3a48ff417c8e927d94996849933fd" )); tree.AddFile("a/b").SetId(ObjectId.FromString("db89c972fc57862eae378f45b74aca228037d415" )); tree.AddFile("a/c").SetId(ObjectId.FromString("52ad142a008aeb39694bafff8e8f1be75ed7f007" )); tree.AddFile("a=c").SetId(ObjectId.FromString("06022365ddbd7fb126761319633bf73517770714" )); tree.AddFile("a=d").SetId(ObjectId.FromString("fa6414df3da87840700e9eeb7fc261dd77ccd5c2" )); Tree tree3 = (Tree)tree.FindTreeMember("a/b.b"); tree3.SetId(InsertTree(tree3)); Tree tree2 = (Tree)tree.FindTreeMember("a"); 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(0, diff.GetChanged().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetAdded().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetRemoved().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetMissing().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetModified().Count); NUnit.Framework.Assert.AreEqual(Collections <string> .EMPTY_SET, diff.GetUntrackedFolders() ); }
/// <summary>Adds a new or existing file with the specified name to this tree.</summary> /// <remarks> /// Adds a new or existing file with the specified name to this tree. /// Trees are added if necessary as the name may contain '/':s. /// </remarks> /// <param name="s">an array containing the name</param> /// <param name="offset">when the name starts in the tree.</param> /// <returns> /// a /// <see cref="FileTreeEntry">FileTreeEntry</see> /// for the added file. /// </returns> /// <exception cref="System.IO.IOException">System.IO.IOException</exception> public virtual FileTreeEntry AddFile(byte[] s, int offset) { int slash; int p; for (slash = offset; slash < s.Length && s[slash] != '/'; slash++) { } // search for path component terminator EnsureLoaded(); byte xlast = slash < s.Length ? unchecked ((byte)(byte)('/')) : (byte)0; p = BinarySearch(contents, s, xlast, offset, slash); if (p >= 0 && slash < s.Length && contents[p] is NGit.Tree) { return(((NGit.Tree)contents[p]).AddFile(s, slash + 1)); } byte[] newName = Substring(s, offset, slash); if (p >= 0) { throw new EntryExistsException(RawParseUtils.Decode(newName)); } else { if (slash < s.Length) { NGit.Tree t = new NGit.Tree(this, newName); InsertEntry(p, t); return(t.AddFile(s, slash + 1)); } else { FileTreeEntry f = new FileTreeEntry(this, null, newName, false); InsertEntry(p, f); return(f); } } }
public virtual void TestEmptyTreeCorruption() { ObjectId bId = ObjectId.FromString("abbbfafe3129f85747aba7bfac992af77134c607"); RevTree tree_root; RevTree tree_A; RevTree tree_AB; RevCommit b; { Tree root = new Tree(db); Tree A = root.AddTree("A"); FileTreeEntry B = root.AddFile("B"); B.SetId(bId); Tree A_A = A.AddTree("A"); Tree A_B = A.AddTree("B"); ObjectInserter inserter = db.NewObjectInserter(); try { A_A.SetId(inserter.Insert(Constants.OBJ_TREE, A_A.Format())); A_B.SetId(inserter.Insert(Constants.OBJ_TREE, A_B.Format())); A.SetId(inserter.Insert(Constants.OBJ_TREE, A.Format())); root.SetId(inserter.Insert(Constants.OBJ_TREE, root.Format())); inserter.Flush(); } finally { inserter.Release(); } tree_root = rw.ParseTree(root.GetId()); tree_A = rw.ParseTree(A.GetId()); tree_AB = rw.ParseTree(A_A.GetId()); NUnit.Framework.Assert.AreSame(tree_AB, rw.ParseTree(A_B.GetId())); b = Commit(rw.ParseTree(root.GetId())); } MarkStart(b); AssertCommit(b, objw.Next()); NUnit.Framework.Assert.IsNull(objw.Next()); NUnit.Framework.Assert.AreSame(tree_root, objw.NextObject()); NUnit.Framework.Assert.AreSame(tree_A, objw.NextObject()); NUnit.Framework.Assert.AreSame(tree_AB, objw.NextObject()); NUnit.Framework.Assert.AreSame(rw.LookupBlob(bId), objw.NextObject()); NUnit.Framework.Assert.IsNull(objw.NextObject()); }
/// <exception cref="System.IO.IOException"></exception> private Tree BuildTree(Dictionary<string, string> headEntries) { Tree tree = new Tree(db); if (headEntries == null) { return tree; } FileTreeEntry fileEntry; Tree parent; ObjectInserter oi = db.NewObjectInserter(); try { foreach (KeyValuePair<string, string> e in headEntries.EntrySet()) { fileEntry = tree.AddFile(e.Key); fileEntry.SetId(GenSha1(e.Value)); parent = fileEntry.GetParent(); while (parent != null) { parent.SetId(oi.Insert(Constants.OBJ_TREE, parent.Format())); parent = parent.GetParent(); } } oi.Flush(); } finally { oi.Release(); } return tree; }
public virtual void TestTreeOnlyOneLevel() { GitIndex index = new GitIndex(db); Tree tree = new Tree(db); tree.AddFile("foo"); tree.AddFile("bar"); new IndexTreeWalker(index, tree, trash, new IndexTreeWalkerTest.TestIndexTreeVisitor (this)).Walk(); NUnit.Framework.Assert.IsTrue(treeOnlyEntriesVisited[0].Equals("bar")); NUnit.Framework.Assert.IsTrue(treeOnlyEntriesVisited[1].Equals("foo")); }
public virtual void Test012_SubtreeExternalSorting() { ObjectId emptyBlob = InsertEmptyBlob(); Tree t = new Tree(db); FileTreeEntry e0 = t.AddFile("a-"); FileTreeEntry e1 = t.AddFile("a-b"); FileTreeEntry e2 = t.AddFile("a/b"); FileTreeEntry e3 = t.AddFile("a="); FileTreeEntry e4 = t.AddFile("a=b"); e0.SetId(emptyBlob); e1.SetId(emptyBlob); e2.SetId(emptyBlob); e3.SetId(emptyBlob); e4.SetId(emptyBlob); Tree a = (Tree)t.FindTreeMember("a"); a.SetId(InsertTree(a)); NUnit.Framework.Assert.AreEqual(ObjectId.FromString("b47a8f0a4190f7572e11212769090523e23eb1ea" ), InsertTree(t)); }
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() ); }
public virtual void TestModified() { WriteTrashFile("file2", "file2"); WriteTrashFile("dir/file3", "dir/file3"); Git git = new Git(db); git.Add().AddFilepattern("file2").AddFilepattern("dir/file3").Call(); WriteTrashFile("dir/file3", "changed"); Tree tree = new Tree(db); tree.AddFile("file2").SetId(ObjectId.FromString("0123456789012345678901234567890123456789" )); tree.AddFile("dir/file3").SetId(ObjectId.FromString("0123456789012345678901234567890123456789" )); NUnit.Framework.Assert.AreEqual(2, tree.MemberCount()); Tree tree2 = (Tree)tree.FindTreeMember("dir"); 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.GetChanged().Count); NUnit.Framework.Assert.IsTrue(diff.GetChanged().Contains("file2")); NUnit.Framework.Assert.IsTrue(diff.GetChanged().Contains("dir/file3")); NUnit.Framework.Assert.AreEqual(1, diff.GetModified().Count); NUnit.Framework.Assert.IsTrue(diff.GetModified().Contains("dir/file3")); NUnit.Framework.Assert.AreEqual(0, diff.GetAdded().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetRemoved().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetMissing().Count); NUnit.Framework.CollectionAssert.AreEquivalent(Collections<string>.EMPTY_SET, diff.GetUntrackedFolders() ); }
public virtual void TestUnchangedComplex() { Git git = new Git(db); WriteTrashFile("a.b", "a.b"); WriteTrashFile("a.c", "a.c"); WriteTrashFile("a/b.b/b", "a/b.b/b"); WriteTrashFile("a/b", "a/b"); WriteTrashFile("a/c", "a/c"); WriteTrashFile("a=c", "a=c"); WriteTrashFile("a=d", "a=d"); git.Add().AddFilepattern("a.b").AddFilepattern("a.c").AddFilepattern("a/b.b/b").AddFilepattern ("a/b").AddFilepattern("a/c").AddFilepattern("a=c").AddFilepattern("a=d").Call(); Tree tree = new Tree(db); // got the hash id'd from the data using echo -n a.b|git hash-object -t blob --stdin tree.AddFile("a.b").SetId(ObjectId.FromString("f6f28df96c2b40c951164286e08be7c38ec74851" )); tree.AddFile("a.c").SetId(ObjectId.FromString("6bc0e647512d2a0bef4f26111e484dc87df7f5ca" )); tree.AddFile("a/b.b/b").SetId(ObjectId.FromString("8d840bd4e2f3a48ff417c8e927d94996849933fd" )); tree.AddFile("a/b").SetId(ObjectId.FromString("db89c972fc57862eae378f45b74aca228037d415" )); tree.AddFile("a/c").SetId(ObjectId.FromString("52ad142a008aeb39694bafff8e8f1be75ed7f007" )); tree.AddFile("a=c").SetId(ObjectId.FromString("06022365ddbd7fb126761319633bf73517770714" )); tree.AddFile("a=d").SetId(ObjectId.FromString("fa6414df3da87840700e9eeb7fc261dd77ccd5c2" )); Tree tree3 = (Tree)tree.FindTreeMember("a/b.b"); tree3.SetId(InsertTree(tree3)); Tree tree2 = (Tree)tree.FindTreeMember("a"); 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(0, diff.GetChanged().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetAdded().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetRemoved().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetMissing().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetModified().Count); NUnit.Framework.CollectionAssert.AreEquivalent(Collections<string>.EMPTY_SET, diff.GetUntrackedFolders() ); }
public virtual void TestUnchangedSimple() { WriteTrashFile("a.b", "a.b"); WriteTrashFile("a.c", "a.c"); WriteTrashFile("a=c", "a=c"); WriteTrashFile("a=d", "a=d"); Git git = new Git(db); git.Add().AddFilepattern("a.b").Call(); git.Add().AddFilepattern("a.c").Call(); git.Add().AddFilepattern("a=c").Call(); git.Add().AddFilepattern("a=d").Call(); Tree tree = new Tree(db); // got the hash id'd from the data using echo -n a.b|git hash-object -t blob --stdin tree.AddFile("a.b").SetId(ObjectId.FromString("f6f28df96c2b40c951164286e08be7c38ec74851" )); tree.AddFile("a.c").SetId(ObjectId.FromString("6bc0e647512d2a0bef4f26111e484dc87df7f5ca" )); tree.AddFile("a=c").SetId(ObjectId.FromString("06022365ddbd7fb126761319633bf73517770714" )); tree.AddFile("a=d").SetId(ObjectId.FromString("fa6414df3da87840700e9eeb7fc261dd77ccd5c2" )); tree.SetId(InsertTree(tree)); FileTreeIterator iterator = new FileTreeIterator(db); IndexDiff diff = new IndexDiff(db, tree.GetId(), iterator); diff.Diff(); NUnit.Framework.Assert.AreEqual(0, diff.GetChanged().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetAdded().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetRemoved().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetMissing().Count); NUnit.Framework.Assert.AreEqual(0, diff.GetModified().Count); NUnit.Framework.CollectionAssert.AreEquivalent(Collections<string>.EMPTY_SET, diff.GetUntrackedFolders() ); }
/// <summary>Adds a new or existing file with the specified name to this tree.</summary> /// <remarks> /// Adds a new or existing file with the specified name to this tree. /// Trees are added if necessary as the name may contain '/':s. /// </remarks> /// <param name="s">an array containing the name</param> /// <param name="offset">when the name starts in the tree.</param> /// <returns> /// a /// <see cref="FileTreeEntry">FileTreeEntry</see> /// for the added file. /// </returns> /// <exception cref="System.IO.IOException">System.IO.IOException</exception> public virtual FileTreeEntry AddFile(byte[] s, int offset) { int slash; int p; for (slash = offset; slash < s.Length && s[slash] != '/'; slash++) { } // search for path component terminator EnsureLoaded(); byte xlast = slash < s.Length ? unchecked((byte)(byte)('/')) : (byte)0; p = BinarySearch(contents, s, xlast, offset, slash); if (p >= 0 && slash < s.Length && contents[p] is NGit.Tree) { return ((NGit.Tree)contents[p]).AddFile(s, slash + 1); } byte[] newName = Substring(s, offset, slash); if (p >= 0) { throw new EntryExistsException(RawParseUtils.Decode(newName)); } else { if (slash < s.Length) { NGit.Tree t = new NGit.Tree(this, newName); InsertEntry(p, t); return t.AddFile(s, slash + 1); } else { FileTreeEntry f = new FileTreeEntry(this, null, newName, false); InsertEntry(p, f); return f; } } }
public virtual void TestTricky() { Tree tree = new Tree(db); tree.AddFile("a.b"); tree.AddFile("a.c"); tree.AddFile("a/b.b/b"); tree.AddFile("a/b"); tree.AddFile("a/c"); tree.AddFile("a=c"); tree.AddFile("a=d"); TreeIterator i = MakeIterator(tree); NUnit.Framework.Assert.IsTrue(i.HasNext()); NUnit.Framework.Assert.AreEqual("a.b", i.Next().GetFullName()); NUnit.Framework.Assert.IsTrue(i.HasNext()); NUnit.Framework.Assert.AreEqual("a.c", i.Next().GetFullName()); NUnit.Framework.Assert.IsTrue(i.HasNext()); NUnit.Framework.Assert.AreEqual("a/b", i.Next().GetFullName()); NUnit.Framework.Assert.IsTrue(i.HasNext()); NUnit.Framework.Assert.AreEqual("a/b.b/b", i.Next().GetFullName()); NUnit.Framework.Assert.IsTrue(i.HasNext()); NUnit.Framework.Assert.AreEqual("a/c", i.Next().GetFullName()); NUnit.Framework.Assert.IsTrue(i.HasNext()); NUnit.Framework.Assert.AreEqual("a=c", i.Next().GetFullName()); NUnit.Framework.Assert.IsTrue(i.HasNext()); NUnit.Framework.Assert.AreEqual("a=d", i.Next().GetFullName()); NUnit.Framework.Assert.IsFalse(i.HasNext()); }
public virtual void Test007_manyFileLookup() { Tree t = new Tree(db); IList<FileTreeEntry> files = new AList<FileTreeEntry>(26 * 26); for (char level1 = 'a'; level1 <= 'z'; level1++) { for (char level2 = 'a'; level2 <= 'z'; level2++) { string n = "." + level1 + level2 + "9"; FileTreeEntry f = t.AddFile(n); NUnit.Framework.Assert.IsNotNull(f, "File " + n + " added."); NUnit.Framework.Assert.AreEqual(n, f.GetName()); files.AddItem(f); } } NUnit.Framework.Assert.AreEqual(files.Count, t.MemberCount()); TreeEntry[] ents = t.Members(); NUnit.Framework.Assert.IsNotNull(ents); NUnit.Framework.Assert.AreEqual(files.Count, ents.Length); for (int k = 0; k < ents.Length; k++) { NUnit.Framework.Assert.IsTrue(files[k] == ents[k], "File " + files[k].GetName() + " is at " + k + "."); } }