Exemplo n.º 1
0
        public void test021_createTreeTag()
        {
            ObjectId emptyId         = new ObjectWriter(db).WriteBlob(new byte[0]);
            var      almostEmptyTree = new global::GitSharp.Core.Tree(db);

            almostEmptyTree.AddEntry(new FileTreeEntry(almostEmptyTree, emptyId, "empty".getBytes(), false));
            ObjectId almostEmptyTreeId = new ObjectWriter(db).WriteTree(almostEmptyTree);

            var t = new global::GitSharp.Core.Tag(db)
            {
                Id      = almostEmptyTreeId,
                TagType = "tree",
                TagName = "test021",
                Author  = new PersonIdent(author, 1154236443000L, -4 * 60),
                Message = "test021 tagged\n"
            };

            t.Save();
            Assert.AreEqual("b0517bc8dbe2096b419d42424cd7030733f4abe5", t.TagId.Name);

            global::GitSharp.Core.Tag MapTag = db.MapTag("test021");
            Assert.AreEqual("tree", MapTag.TagType);
            Assert.AreEqual("test021 tagged\n", MapTag.Message);
            Assert.AreEqual(new PersonIdent(author, 1154236443000L, -4 * 60), MapTag.Author);
            Assert.AreEqual("417c01c8795a35b8e835113a85a5c0c1c77f67fb", MapTag.Id.Name);
        }
Exemplo n.º 2
0
        public void test023_createCommitNonAnullii()
        {
            ObjectId emptyId         = new ObjectWriter(db).WriteBlob(new byte[0]);
            var      almostEmptyTree = new global::GitSharp.Core.Tree(db);

            almostEmptyTree.AddEntry(new FileTreeEntry(almostEmptyTree, emptyId, "empty".getBytes(), false));
            ObjectId almostEmptyTreeId = new ObjectWriter(db).WriteTree(almostEmptyTree);

            var commit = new global::GitSharp.Core.Commit(db)
            {
                TreeId    = almostEmptyTreeId,
                Author    = new PersonIdent("Joe H\u00e4cker", "*****@*****.**", 4294967295000L, 60),
                Committer = new PersonIdent("Joe Hacker", "*****@*****.**", 4294967295000L, 60),
                Encoding  = Constants.CHARSET,
                Message   = "\u00dcbergeeks"
            };

            ObjectId cid = new ObjectWriter(db).WriteCommit(commit);

            Assert.AreEqual("4680908112778718f37e686cbebcc912730b3154", cid.Name);

            global::GitSharp.Core.Commit loadedCommit = db.MapCommit(cid);
            Assert.AreNotSame(loadedCommit, commit);
            Assert.AreEqual(commit.Message, loadedCommit.Message);
        }
Exemplo n.º 3
0
        public void testTwoSuccessiveCommitsLinkedToHead()
        {
            var repo             = createBareRepository();
            var workingDirectory = repo.WorkingDirectory;

            repo.Create();

            var objectWriter = new ObjectWriter(repo);

            FileInfo project1_a_txt = writeTrashFile(Path.Combine(workingDirectory.FullName, "Project-1/A.txt"), "A.txt - first version\n");
            FileInfo project1_b_txt = writeTrashFile(Path.Combine(workingDirectory.FullName, "Project-1/B.txt"), "B.txt - first version\n");

            var tree = new global::GitSharp.Core.Tree(repo);

            global::GitSharp.Core.Tree projectTree = tree.AddTree("Project-1");
            addFile(projectTree, project1_a_txt, objectWriter);
            projectTree.Id = (objectWriter.WriteTree(projectTree));
            addFile(projectTree, project1_b_txt, objectWriter);
            projectTree.Id = (objectWriter.WriteTree(projectTree));
            tree.Id        = (objectWriter.WriteTree(tree));

            var commit = new global::GitSharp.Core.Commit(repo)
            {
                Author    = new PersonIdent(author, (0L), 60),
                Committer = new PersonIdent(committer, (0L), 60),
                Message   = "Foo\n\nMessage",
                TreeEntry = tree
            };

            commit.Save();
            var commitId = commit.CommitId;

            FileInfo project1_b_v2_txt = writeTrashFile(Path.Combine(workingDirectory.FullName, "Project-1/B.txt"), "B.txt - second version\n");

            tree        = new global::GitSharp.Core.Tree(repo);
            projectTree = tree.AddTree("Project-1");
            addFile(projectTree, project1_a_txt, objectWriter);
            projectTree.Id = (objectWriter.WriteTree(projectTree));
            addFile(projectTree, project1_b_v2_txt, objectWriter);
            projectTree.Id = (objectWriter.WriteTree(projectTree));
            tree.Id        = (objectWriter.WriteTree(tree));

            commit = new global::GitSharp.Core.Commit(repo)
            {
                Author    = new PersonIdent(author, (0L), 60),
                Committer = new PersonIdent(committer, (0L), 60),
                Message   = "Modified",
                ParentIds = new[] { commitId },
                TreeEntry = tree
            };
            commit.Save();
            commitId = commit.CommitId;

            RefUpdate lck = repo.UpdateRef("refs/heads/master");

            Assert.IsNotNull(lck, "obtained lock");
            lck.NewObjectId = commitId;
            Assert.AreEqual(RefUpdate.RefUpdateResult.NEW, lck.forceUpdate());
        }
Exemplo n.º 4
0
        public void test002_WriteEmptyTree2()
        {
            // File shouldn't exist as it is in a test pack.
            //
            var t = new global::GitSharp.Core.Tree(db);

            t.Accept(new WriteTree(trash, db), TreeEntry.MODIFIED_ONLY);
            Assert.AreEqual("4b825dc642cb6eb9a060e54bf8d69288fbee4904", t.Id.Name);
            var o = new FileInfo(db.Directory + "/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904");

            Assert.IsFalse(o.IsFile(), "Exists " + o);
        }
Exemplo n.º 5
0
        public void Write_Simple_Commit()
        {
            var           t = new global::GitSharp.Core.Tree(db);
            FileTreeEntry f = t.AddFile("i-am-a-file");

            writeTrashFile(f.Name, "and this is the data in me\r\n\r\n");
            t.Accept(new WriteTree(trash, db), TreeEntry.MODIFIED_ONLY);
            //new ObjectChecker().checkBlob(Constants.CHARSET.GetString(db.OpenObject(t.TreeId).getBytes()).ToCharArray());

            string s  = new Inspector(db).Inspect(t.Id);
            string s1 = Inspector.Inspect("Resources/single_file_commit", "16c0beaf7523eb3ef5df45bd42dd4fc6343de864");
            string s2 = Inspector.Inspect("Resources/single_file_commit", "917c130bd4fa5bf2df0c399dc1b03401860aa448");
            string s3 = Inspector.Inspect("Resources/single_file_commit", "95ea6a6859af6791464bd8b6de76ad5a6f9fad81");

            //tree 917c130bd4fa5bf2df0c399dc1b03401860aa448\nauthor henon <*****@*****.**> 1245946742 +0200\ncommitter henon <*****@*****.**> 1245946742 +0200\n\nA Commit\n"

            Assert.AreEqual(ObjectId.FromString("917c130bd4fa5bf2df0c399dc1b03401860aa448"), t.Id);


            var c = new global::GitSharp.Core.Commit(db)
            {
                Author    = (new PersonIdent("henon", "*****@*****.**", 1245946742000L, 2 * 60)),
                Committer = (new PersonIdent("henon", "*****@*****.**", 1245946742000L, 2 * 60)),
                Message   = ("A Commit\n"),
                TreeEntry = (t)
            };

            Assert.AreEqual(t.TreeId, c.TreeId);
            c.Save();

            string   s_c   = new Inspector(db).Inspect(c.CommitId);
            ObjectId cmtid = ObjectId.FromString("16c0beaf7523eb3ef5df45bd42dd4fc6343de864");

            Assert.AreEqual(cmtid, c.CommitId);

            // Verify the commit we just wrote is in the correct format.
            //using (var xis = new XInputStream(new FileStream(db.ToFile(cmtid).FullName, System.IO.FileMode.Open, FileAccess.Read)))
            //{
            //    Assert.AreEqual(0x78, xis.ReadUInt8());
            //    Assert.AreEqual(0x9c, xis.ReadUInt8());
            //    Assert.IsTrue(0x789c % 31 == 0);
            //}

            // Verify we can Read it.
            global::GitSharp.Core.Commit c2 = db.MapCommit(cmtid.Name);
            Assert.IsNotNull(c2);
            Assert.AreEqual(c.Message, c2.Message);
            Assert.AreEqual(c.TreeId, c2.TreeId);
            Assert.AreEqual(c.Author, c2.Author);
            Assert.AreEqual(c.Committer, c2.Committer);
        }
Exemplo n.º 6
0
        public void test002_WriteEmptyTree()
        {
            // One of our test packs contains the empty tree object. If the pack is
            // open when we Create it we won't write the object file out as a loose
            // object (as it already exists in the pack).
            //
            global::GitSharp.Core.Repository newdb = createBareRepository();
            var t = new global::GitSharp.Core.Tree(newdb);

            t.Accept(new WriteTree(trash, newdb), TreeEntry.MODIFIED_ONLY);
            Assert.AreEqual("4b825dc642cb6eb9a060e54bf8d69288fbee4904", t.Id.Name);
            var o = new FileInfo(newdb.Directory + "/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904");

            Assert.IsTrue(o.IsFile(), "Exists " + o);
            Assert.IsTrue(o.IsReadOnly, "Read-only " + o);
        }
Exemplo n.º 7
0
        public void test009_CreateCommitOldFormat()
        {
            writeTrashFile(".git/config", "[core]\n" + "legacyHeaders=1\n");
            db.Config.load();
            Assert.AreEqual(true, db.Config.getBoolean("core", "legacyHeaders", false));

            var           t = new global::GitSharp.Core.Tree(db);
            FileTreeEntry f = t.AddFile("i-am-a-file");

            writeTrashFile(f.Name, "and this is the data in me\n");
            t.Accept(new WriteTree(trash, db), TreeEntry.MODIFIED_ONLY);

            Assert.AreEqual(ObjectId.FromString("00b1f73724f493096d1ffa0b0f1f1482dbb8c936"), t.TreeId);


            var c = new global::GitSharp.Core.Commit(db)
            {
                Author    = (new PersonIdent(author, 1154236443000L, -4 * 60)),
                Committer = (new PersonIdent(committer, 1154236443000L, -4 * 60)),
                Message   = ("A Commit\n"),
                TreeEntry = t
            };

            Assert.AreEqual(t.TreeId, c.TreeId);
            c.Save();

            ObjectId cmtid = ObjectId.FromString("803aec4aba175e8ab1d666873c984c0308179099");

            Assert.AreEqual(cmtid, c.CommitId);

            // Verify the commit we just wrote is in the correct format.
            using (var xis = new XInputStream(new FileStream(db.ToFile(cmtid).FullName, System.IO.FileMode.Open, FileAccess.Read)))
            {
                Assert.AreEqual(0x78, xis.ReadUInt8());
                Assert.AreEqual(0x9c, xis.ReadUInt8());
                Assert.IsTrue(0x789c % 31 == 0);
            }

            // Verify we can Read it.
            global::GitSharp.Core.Commit c2 = db.MapCommit(cmtid);
            Assert.IsNotNull(c2);
            Assert.AreEqual(c.Message, c2.Message);
            Assert.AreEqual(c.TreeId, c2.TreeId);
            Assert.AreEqual(c.Author, c2.Author);
            Assert.AreEqual(c.Committer, c2.Committer);
        }
Exemplo n.º 8
0
        public void test003_WriteShouldBeEmptyTree()
        {
            global::GitSharp.Core.Tree t = new global::GitSharp.Core.Tree(db);
            ObjectId emptyId             = new ObjectWriter(db).WriteBlob(new byte[0]);

            t.AddFile("should-be-empty").Id = emptyId;
            t.Accept(new WriteTree(trash, db), TreeEntry.MODIFIED_ONLY);
            Assert.AreEqual("7bb943559a305bdd6bdee2cef6e5df2413c3d30a", t.Id.Name);

            var o = new FileInfo(db.Directory + "/objects/7b/b943559a305bdd6bdee2cef6e5df2413c3d30a");

            Assert.IsTrue(o.IsFile(), "Exists " + o);
            Assert.IsTrue(o.IsReadOnly, "Read-only " + o);

            o = new FileInfo(db.Directory + "/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391");
            Assert.IsTrue(o.IsFile(), "Exists " + o);
            Assert.IsTrue(o.IsReadOnly, "Read-only " + o);
        }
Exemplo n.º 9
0
        public void test012_SubtreeExternalSorting()
        {
            ObjectId      emptyBlob = new ObjectWriter(db).WriteBlob(new byte[0]);
            var           t         = new global::GitSharp.Core.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.Id = emptyBlob;
            e1.Id = emptyBlob;
            e2.Id = emptyBlob;
            e3.Id = emptyBlob;
            e4.Id = emptyBlob;

            t.Accept(new WriteTree(trash, db), TreeEntry.MODIFIED_ONLY);
            Assert.AreEqual(ObjectId.FromString("b47a8f0a4190f7572e11212769090523e23eb1ea"), t.Id);
        }
Exemplo n.º 10
0
        public void Write_Tree()
        {
            var           t = new global::GitSharp.Core.Tree(db);
            FileTreeEntry f = t.AddFile("i-am-a-file");

            writeTrashFile(f.Name, "and this is the data in me\r\n\r\n");
            Assert.AreEqual(File.ReadAllText("Resources/single_file_commit/i-am-a-file"), File.ReadAllText(db.WorkingDirectory.FullName + "/i-am-a-file"));
            t.Accept(new WriteTree(trash, db), TreeEntry.MODIFIED_ONLY);
            var id = t.Id;

            int git_w1;
            int git_w2;
            int w1;
            int w2;

            using (var b1 = new BinaryReader(new Inspector(db).ContentStream(id)))
                using (var b2 = new BinaryReader(Inspector.ContentStream("Resources/single_file_commit", "917c130bd4fa5bf2df0c399dc1b03401860aa448")))
                {
                    b1.BaseStream.Position = b1.BaseStream.Length - 21;
                    b2.BaseStream.Position = b2.BaseStream.Length - 21;
                    Assert.AreEqual(b2.ReadByte(), b1.ReadByte());

                    git_w1 = b2.ReadInt32();
                    git_w2 = b2.ReadInt32();
                    var git_w3 = b2.ReadInt32();
                    var git_w4 = b2.ReadInt32();
                    var git_w5 = b2.ReadInt32();
                    b2.BaseStream.Position = b2.BaseStream.Length - 20;
                    var git_id = ObjectId.FromRaw(b2.ReadBytes(20));
                    w1 = b1.ReadInt32();
                    w2 = b1.ReadInt32();
                }

            Assert.AreEqual(git_w1, w1);
            Assert.AreEqual(git_w2, w2);

            Assert.AreEqual("917c130bd4fa5bf2df0c399dc1b03401860aa448", id.Name);
            var s_git = Inspector.Inspect("Resources/single_file_commit", "917c130bd4fa5bf2df0c399dc1b03401860aa448");
            var s     = new Inspector(db).Inspect(id);

            Assert.AreEqual(s_git, s);
        }
Exemplo n.º 11
0
        public void test024_createCommitNonAscii()
        {
            ObjectId emptyId         = new ObjectWriter(db).WriteBlob(new byte[0]);
            var      almostEmptyTree = new global::GitSharp.Core.Tree(db);

            almostEmptyTree.AddEntry(new FileTreeEntry(almostEmptyTree, emptyId, "empty".getBytes(), false));
            ObjectId almostEmptyTreeId = new ObjectWriter(db).WriteTree(almostEmptyTree);
            var      commit            = new global::GitSharp.Core.Commit(db)
            {
                TreeId    = almostEmptyTreeId,
                Author    = new PersonIdent("Joe H\u00e4cker", "*****@*****.**", 4294967295000L, 60),
                Committer = new PersonIdent("Joe Hacker", "*****@*****.**", 4294967295000L, 60),
                Encoding  = Encoding.GetEncoding("ISO-8859-1"),
                Message   = "\u00dcbergeeks"
            };
            ObjectId cid = new ObjectWriter(db).WriteCommit(commit);
            var      s   = new Inspector(db).Inspect(cid);

            Assert.AreEqual("2979b39d385014b33287054b87f77bcb3ecb5ebf", cid.Name);
        }
Exemplo n.º 12
0
        public void testEmptyTreeCorruption()
        {
            ObjectId  bId = ObjectId.FromString("abbbfafe3129f85747aba7bfac992af77134c607");
            RevTree   tree_root, tree_A, tree_AB;
            RevCommit b;

            {
                global::GitSharp.Core.Tree root = new global::GitSharp.Core.Tree(db);
                global::GitSharp.Core.Tree A    = root.AddTree("A");
                FileTreeEntry B = root.AddFile("B");
                B.Id = (bId);

                global::GitSharp.Core.Tree A_A = A.AddTree("A");
                global::GitSharp.Core.Tree A_B = A.AddTree("B");

                var ow = new ObjectWriter(db);
                A_A.Id  = (ow.WriteTree(A_A));
                A_B.Id  = (ow.WriteTree(A_B));
                A.Id    = (ow.WriteTree(A));
                root.Id = (ow.WriteTree(root));

                tree_root = rw.parseTree(root.Id);
                tree_A    = rw.parseTree(A.Id);
                tree_AB   = rw.parseTree(A_A.Id);
                Assert.AreSame(tree_AB, rw.parseTree(A_B.Id));
                b = Commit(rw.parseTree(root.Id));
            }

            MarkStart(b);

            AssertCommit(b, objw.next());
            Assert.IsNull(objw.next());

            Assert.AreSame(tree_root, objw.nextObject());
            Assert.AreSame(tree_A, objw.nextObject());
            Assert.AreSame(tree_AB, objw.nextObject());
            Assert.AreSame(rw.lookupBlob(bId), objw.nextObject());
            Assert.IsNull(objw.nextObject());
        }
Exemplo n.º 13
0
        public void test022_createCommitTag()
        {
            ObjectId emptyId         = new ObjectWriter(db).WriteBlob(new byte[0]);
            var      almostEmptyTree = new global::GitSharp.Core.Tree(db);

            almostEmptyTree.AddEntry(new FileTreeEntry(almostEmptyTree, emptyId, "empty".getBytes(), false));
            ObjectId almostEmptyTreeId = new ObjectWriter(db).WriteTree(almostEmptyTree);

            var almostEmptyCommit = new global::GitSharp.Core.Commit(db)
            {
                Author    = new PersonIdent(author, 1154236443000L, -2 * 60),
                Committer = new PersonIdent(author, 1154236443000L, -2 * 60),
                Message   = "test022\n",
                TreeId    = almostEmptyTreeId
            };

            ObjectId almostEmptyCommitId = new ObjectWriter(db).WriteCommit(almostEmptyCommit);

            var t = new global::GitSharp.Core.Tag(db)
            {
                Id      = almostEmptyCommitId,
                TagType = "commit",
                TagName = "test022",
                Author  = new PersonIdent(author, 1154236443000L, -4 * 60),
                Message = "test022 tagged\n"
            };

            t.Save();
            Assert.AreEqual("0ce2ebdb36076ef0b38adbe077a07d43b43e3807", t.TagId.Name);

            global::GitSharp.Core.Tag mapTag = db.MapTag("test022");
            Assert.AreEqual("commit", mapTag.TagType);
            Assert.AreEqual("test022 tagged\n", mapTag.Message);
            Assert.AreEqual(new PersonIdent(author, 1154236443000L, -4 * 60), mapTag.Author);
            Assert.AreEqual("b5d3b45a96b340441f5abb9080411705c51cc86c", mapTag.Id.Name);
        }
Exemplo n.º 14
0
 public void test002_WriteEmptyTree2()
 {
     // File shouldn't exist as it is in a test pack.
     //
     var t = new global::GitSharp.Core.Tree(db);
     t.Accept(new WriteTree(trash, db), TreeEntry.MODIFIED_ONLY);
     Assert.AreEqual("4b825dc642cb6eb9a060e54bf8d69288fbee4904", t.Id.Name);
     var o = new FileInfo(db.Directory + "/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904");
     Assert.IsFalse(o.IsFile(), "Exists " + o);
 }
Exemplo n.º 15
0
        public void test003_WriteShouldBeEmptyTree()
        {
            global::GitSharp.Core.Tree t = new global::GitSharp.Core.Tree(db);
            ObjectId emptyId = new ObjectWriter(db).WriteBlob(new byte[0]);
            t.AddFile("should-be-empty").Id = emptyId;
            t.Accept(new WriteTree(trash, db), TreeEntry.MODIFIED_ONLY);
            Assert.AreEqual("7bb943559a305bdd6bdee2cef6e5df2413c3d30a", t.Id.Name);

            var o = new FileInfo(db.Directory + "/objects/7b/b943559a305bdd6bdee2cef6e5df2413c3d30a");
            Assert.IsTrue(o.IsFile(), "Exists " + o);
            Assert.IsTrue(o.IsReadOnly, "Read-only " + o);

            o = new FileInfo(db.Directory + "/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391");
            Assert.IsTrue(o.IsFile(), "Exists " + o);
            Assert.IsTrue(o.IsReadOnly, "Read-only " + o);
        }
Exemplo n.º 16
0
        public void Write_Simple_Commit()
        {
            var t = new global::GitSharp.Core.Tree(db);
            FileTreeEntry f = t.AddFile("i-am-a-file");
            writeTrashFile(f.Name, "and this is the data in me\r\n\r\n");
            t.Accept(new WriteTree(trash, db), TreeEntry.MODIFIED_ONLY);
            //new ObjectChecker().checkBlob(Constants.CHARSET.GetString(db.OpenObject(t.TreeId).getBytes()).ToCharArray());

            string s = new Inspector(db).Inspect(t.Id);
            string s1 = Inspector.Inspect("Resources/single_file_commit", "16c0beaf7523eb3ef5df45bd42dd4fc6343de864");
            string s2 = Inspector.Inspect("Resources/single_file_commit", "917c130bd4fa5bf2df0c399dc1b03401860aa448");
            string s3 = Inspector.Inspect("Resources/single_file_commit", "95ea6a6859af6791464bd8b6de76ad5a6f9fad81");

            //tree 917c130bd4fa5bf2df0c399dc1b03401860aa448\nauthor henon <*****@*****.**> 1245946742 +0200\ncommitter henon <*****@*****.**> 1245946742 +0200\n\nA Commit\n"

            Assert.AreEqual(ObjectId.FromString("917c130bd4fa5bf2df0c399dc1b03401860aa448"), t.Id);


            var c = new global::GitSharp.Core.Commit(db)
                        {
                            Author = (new PersonIdent("henon", "*****@*****.**", 1245946742000L, 2*60)),
                            Committer = (new PersonIdent("henon", "*****@*****.**", 1245946742000L, 2*60)),
                            Message = ("A Commit\n"),
                            TreeEntry = (t)
                        };
            Assert.AreEqual(t.TreeId, c.TreeId);
            c.Save();

            string s_c = new Inspector(db).Inspect(c.CommitId);
            ObjectId cmtid = ObjectId.FromString("16c0beaf7523eb3ef5df45bd42dd4fc6343de864");
            Assert.AreEqual(cmtid, c.CommitId);

            // Verify the commit we just wrote is in the correct format.
            //using (var xis = new XInputStream(new FileStream(db.ToFile(cmtid).FullName, System.IO.FileMode.Open, FileAccess.Read)))
            //{
            //    Assert.AreEqual(0x78, xis.ReadUInt8());
            //    Assert.AreEqual(0x9c, xis.ReadUInt8());
            //    Assert.IsTrue(0x789c % 31 == 0);
            //}

            // Verify we can Read it.
            global::GitSharp.Core.Commit c2 = db.MapCommit(cmtid.Name);
            Assert.IsNotNull(c2);
            Assert.AreEqual(c.Message, c2.Message);
            Assert.AreEqual(c.TreeId, c2.TreeId);
            Assert.AreEqual(c.Author, c2.Author);
            Assert.AreEqual(c.Committer, c2.Committer);
        }
Exemplo n.º 17
0
        public void test009_CreateCommitOldFormat()
        {
            writeTrashFile(".git/config", "[core]\n" + "legacyHeaders=1\n");
            db.Config.load();
            Assert.AreEqual(true, db.Config.getBoolean("core", "legacyHeaders", false));

            var t = new global::GitSharp.Core.Tree(db);
            FileTreeEntry f = t.AddFile("i-am-a-file");
            writeTrashFile(f.Name, "and this is the data in me\n");
            t.Accept(new WriteTree(trash, db), TreeEntry.MODIFIED_ONLY);

            Assert.AreEqual(ObjectId.FromString("00b1f73724f493096d1ffa0b0f1f1482dbb8c936"), t.TreeId);


            var c = new global::GitSharp.Core.Commit(db)
                        {
                            Author = (new PersonIdent(author, 1154236443000L, -4*60)),
                            Committer = (new PersonIdent(committer, 1154236443000L, -4*60)),
                            Message = ("A Commit\n"),
                            TreeEntry = t
                        };
            Assert.AreEqual(t.TreeId, c.TreeId);
            c.Save();

            ObjectId cmtid = ObjectId.FromString("803aec4aba175e8ab1d666873c984c0308179099");
            Assert.AreEqual(cmtid, c.CommitId);

            // Verify the commit we just wrote is in the correct format.
            using (var xis = new XInputStream(new FileStream(db.ToFile(cmtid).FullName, System.IO.FileMode.Open, FileAccess.Read)))
            {
                Assert.AreEqual(0x78, xis.ReadUInt8());
                Assert.AreEqual(0x9c, xis.ReadUInt8());
                Assert.IsTrue(0x789c % 31 == 0);
            }

            // Verify we can Read it.
            global::GitSharp.Core.Commit c2 = db.MapCommit(cmtid);
            Assert.IsNotNull(c2);
            Assert.AreEqual(c.Message, c2.Message);
            Assert.AreEqual(c.TreeId, c2.TreeId);
            Assert.AreEqual(c.Author, c2.Author);
            Assert.AreEqual(c.Committer, c2.Committer);
        }
Exemplo n.º 18
0
        public void test026_CreateCommitMultipleparents()
        {
            db.Config.load();

            var t = new global::GitSharp.Core.Tree(db);
            FileTreeEntry f = t.AddFile("i-am-a-file");
            writeTrashFile(f.Name, "and this is the data in me\n");
            t.Accept(new WriteTree(trash, db), TreeEntry.MODIFIED_ONLY);
            Assert.AreEqual(ObjectId.FromString("00b1f73724f493096d1ffa0b0f1f1482dbb8c936"),
                            t.TreeId);

            var c1 = new global::GitSharp.Core.Commit(db)
                         {
                             Author = new PersonIdent(author, 1154236443000L, -4*60),
                             Committer = new PersonIdent(committer, 1154236443000L, -4*60),
                             Message = "A Commit\n",
                             TreeEntry = t
                         };

            Assert.AreEqual(t.TreeId, c1.TreeId);
            c1.Save();
            ObjectId cmtid1 = ObjectId.FromString("803aec4aba175e8ab1d666873c984c0308179099");
            Assert.AreEqual(cmtid1, c1.CommitId);

            var c2 = new global::GitSharp.Core.Commit(db)
                         {
                             Author = new PersonIdent(author, 1154236443000L, -4*60),
                             Committer = new PersonIdent(committer, 1154236443000L, -4*60),
                             Message = "A Commit 2\n",
                             TreeEntry = t
                         };

            Assert.AreEqual(t.TreeId, c2.TreeId);
            c2.ParentIds = new[] { c1.CommitId };
            c2.Save();
            ObjectId cmtid2 = ObjectId.FromString("95d068687c91c5c044fb8c77c5154d5247901553");
            Assert.AreEqual(cmtid2, c2.CommitId);

            global::GitSharp.Core.Commit rm2 = db.MapCommit(cmtid2);
            Assert.AreNotSame(c2, rm2); // assert the parsed objects is not from the cache
            Assert.AreEqual(c2.Author, rm2.Author);
            Assert.AreEqual(c2.CommitId, rm2.CommitId);
            Assert.AreEqual(c2.Message, rm2.Message);
            Assert.AreEqual(c2.TreeEntry.TreeId, rm2.TreeEntry.TreeId);
            Assert.AreEqual(1, rm2.ParentIds.Length);
            Assert.AreEqual(c1.CommitId, rm2.ParentIds[0]);

            var c3 = new global::GitSharp.Core.Commit(db)
                         {
                             Author = new PersonIdent(author, 1154236443000L, -4*60),
                             Committer = new PersonIdent(committer, 1154236443000L, -4*60),
                             Message = "A Commit 3\n",
                             TreeEntry = t
                         };

            Assert.AreEqual(t.TreeId, c3.TreeId);
            c3.ParentIds = new[] { c1.CommitId, c2.CommitId };
            c3.Save();
            ObjectId cmtid3 = ObjectId.FromString("ce6e1ce48fbeeb15a83f628dc8dc2debefa066f4");
            Assert.AreEqual(cmtid3, c3.CommitId);

            global::GitSharp.Core.Commit rm3 = db.MapCommit(cmtid3);
            Assert.AreNotSame(c3, rm3); // assert the parsed objects is not from the cache
            Assert.AreEqual(c3.Author, rm3.Author);
            Assert.AreEqual(c3.CommitId, rm3.CommitId);
            Assert.AreEqual(c3.Message, rm3.Message);
            Assert.AreEqual(c3.TreeEntry.TreeId, rm3.TreeEntry.TreeId);
            Assert.AreEqual(2, rm3.ParentIds.Length);
            Assert.AreEqual(c1.CommitId, rm3.ParentIds[0]);
            Assert.AreEqual(c2.CommitId, rm3.ParentIds[1]);

            var c4 = new global::GitSharp.Core.Commit(db)
                         {
                             Author = new PersonIdent(author, 1154236443000L, -4*60),
                             Committer = new PersonIdent(committer, 1154236443000L, -4*60),
                             Message = "A Commit 4\n",
                             TreeEntry = t
                         };

            Assert.AreEqual(t.TreeId, c3.TreeId);
            c4.ParentIds = new[] { c1.CommitId, c2.CommitId, c3.CommitId };
            c4.Save();
            ObjectId cmtid4 = ObjectId.FromString("d1fca9fe3fef54e5212eb67902c8ed3e79736e27");
            Assert.AreEqual(cmtid4, c4.CommitId);

            global::GitSharp.Core.Commit rm4 = db.MapCommit(cmtid4);
            Assert.AreNotSame(c4, rm3); // assert the parsed objects is not from the cache
            Assert.AreEqual(c4.Author, rm4.Author);
            Assert.AreEqual(c4.CommitId, rm4.CommitId);
            Assert.AreEqual(c4.Message, rm4.Message);
            Assert.AreEqual(c4.TreeEntry.TreeId, rm4.TreeEntry.TreeId);
            Assert.AreEqual(3, rm4.ParentIds.Length);
            Assert.AreEqual(c1.CommitId, rm4.ParentIds[0]);
            Assert.AreEqual(c2.CommitId, rm4.ParentIds[1]);
            Assert.AreEqual(c3.CommitId, rm4.ParentIds[2]);
        }
Exemplo n.º 19
0
        public void test021_createTreeTag()
        {
            ObjectId emptyId = new ObjectWriter(db).WriteBlob(new byte[0]);
            var almostEmptyTree = new global::GitSharp.Core.Tree(db);
            almostEmptyTree.AddEntry(new FileTreeEntry(almostEmptyTree, emptyId, "empty".getBytes(), false));
            ObjectId almostEmptyTreeId = new ObjectWriter(db).WriteTree(almostEmptyTree);

            var t = new global::GitSharp.Core.Tag(db)
                        {
                            Id = almostEmptyTreeId,
                            TagType = "tree",
                            TagName = "test021",
                            Author = new PersonIdent(author, 1154236443000L, -4*60),
                            Message = "test021 tagged\n"
                        };
        	
            t.Save();
            Assert.AreEqual("b0517bc8dbe2096b419d42424cd7030733f4abe5", t.TagId.Name);

            global::GitSharp.Core.Tag MapTag = db.MapTag("test021");
            Assert.AreEqual("tree", MapTag.TagType);
            Assert.AreEqual("test021 tagged\n", MapTag.Message);
            Assert.AreEqual(new PersonIdent(author, 1154236443000L, -4 * 60), MapTag.Author);
            Assert.AreEqual("417c01c8795a35b8e835113a85a5c0c1c77f67fb", MapTag.Id.Name);
        }
Exemplo n.º 20
0
        public void test022_createCommitTag()
        {
            ObjectId emptyId = new ObjectWriter(db).WriteBlob(new byte[0]);
            var almostEmptyTree = new global::GitSharp.Core.Tree(db);
            almostEmptyTree.AddEntry(new FileTreeEntry(almostEmptyTree, emptyId, "empty".getBytes(), false));
            ObjectId almostEmptyTreeId = new ObjectWriter(db).WriteTree(almostEmptyTree);

            var almostEmptyCommit = new global::GitSharp.Core.Commit(db)
                                        {
                                            Author = new PersonIdent(author, 1154236443000L, -2*60),
                                            Committer = new PersonIdent(author, 1154236443000L, -2*60),
                                            Message = "test022\n",
                                            TreeId = almostEmptyTreeId
                                        };

            ObjectId almostEmptyCommitId = new ObjectWriter(db).WriteCommit(almostEmptyCommit);

            var t = new global::GitSharp.Core.Tag(db)
                        {
                            Id = almostEmptyCommitId,
                            TagType = "commit",
                            TagName = "test022",
                            Author = new PersonIdent(author, 1154236443000L, -4*60),
                            Message = "test022 tagged\n"
                        };

            t.Save();
            Assert.AreEqual("0ce2ebdb36076ef0b38adbe077a07d43b43e3807", t.TagId.Name);

            global::GitSharp.Core.Tag mapTag = db.MapTag("test022");
            Assert.AreEqual("commit", mapTag.TagType);
            Assert.AreEqual("test022 tagged\n", mapTag.Message);
            Assert.AreEqual(new PersonIdent(author, 1154236443000L, -4 * 60), mapTag.Author);
            Assert.AreEqual("b5d3b45a96b340441f5abb9080411705c51cc86c", mapTag.Id.Name);
        }
Exemplo n.º 21
0
        public void test023_createCommitNonAnullii()
        {
            ObjectId emptyId = new ObjectWriter(db).WriteBlob(new byte[0]);
            var almostEmptyTree = new global::GitSharp.Core.Tree(db);
            almostEmptyTree.AddEntry(new FileTreeEntry(almostEmptyTree, emptyId, "empty".getBytes(), false));
            ObjectId almostEmptyTreeId = new ObjectWriter(db).WriteTree(almostEmptyTree);

            var commit = new global::GitSharp.Core.Commit(db)
                             {
                                 TreeId = almostEmptyTreeId,
                                 Author = new PersonIdent("Joe H\u00e4cker", "*****@*****.**", 4294967295000L, 60),
                                 Committer = new PersonIdent("Joe Hacker", "*****@*****.**", 4294967295000L, 60),
                                 Encoding = Constants.CHARSET,
                                 Message = "\u00dcbergeeks"
                             };
        	
            ObjectId cid = new ObjectWriter(db).WriteCommit(commit);
            Assert.AreEqual("4680908112778718f37e686cbebcc912730b3154", cid.Name);

            global::GitSharp.Core.Commit loadedCommit = db.MapCommit(cid);
            Assert.AreNotSame(loadedCommit, commit);
            Assert.AreEqual(commit.Message, loadedCommit.Message);
        }
Exemplo n.º 22
0
 public void test002_WriteEmptyTree()
 {
     // One of our test packs contains the empty tree object. If the pack is
     // open when we Create it we won't write the object file out as a loose
     // object (as it already exists in the pack).
     //
     global::GitSharp.Core.Repository newdb = createBareRepository();
     var t = new global::GitSharp.Core.Tree(newdb);
     t.Accept(new WriteTree(trash, newdb), TreeEntry.MODIFIED_ONLY);
     Assert.AreEqual("4b825dc642cb6eb9a060e54bf8d69288fbee4904", t.Id.Name);
     var o = new FileInfo(newdb.Directory + "/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904");
     Assert.IsTrue(o.IsFile(), "Exists " + o);
     Assert.IsTrue(o.IsReadOnly, "Read-only " + o);
 }
Exemplo n.º 23
0
        public void testTwoSuccessiveCommitsLinkedToHead()
        {
            var repo = createBareRepository();
            var workingDirectory = repo.WorkingDirectory;
            repo.Create();

            var objectWriter = new ObjectWriter(repo);

            FileInfo project1_a_txt = writeTrashFile(Path.Combine(workingDirectory.FullName, "Project-1/A.txt"), "A.txt - first version\n");
            FileInfo project1_b_txt = writeTrashFile(Path.Combine(workingDirectory.FullName, "Project-1/B.txt"), "B.txt - first version\n");

            var tree = new global::GitSharp.Core.Tree(repo);
            global::GitSharp.Core.Tree projectTree = tree.AddTree("Project-1");
            addFile(projectTree, project1_a_txt, objectWriter);
            projectTree.Id = (objectWriter.WriteTree(projectTree));
            addFile(projectTree, project1_b_txt, objectWriter);
            projectTree.Id = (objectWriter.WriteTree(projectTree));
            tree.Id = (objectWriter.WriteTree(tree));

            var commit = new global::GitSharp.Core.Commit(repo)
                             {
                                 Author = new PersonIdent(author, (0L), 60),
                                 Committer = new PersonIdent(committer, (0L), 60),
                                 Message = "Foo\n\nMessage",
                                 TreeEntry = tree
                             };
            commit.Save();
            var commitId = commit.CommitId;

            FileInfo project1_b_v2_txt = writeTrashFile(Path.Combine(workingDirectory.FullName, "Project-1/B.txt"), "B.txt - second version\n");

            tree = new global::GitSharp.Core.Tree(repo);
            projectTree = tree.AddTree("Project-1");
            addFile(projectTree, project1_a_txt, objectWriter);
            projectTree.Id = (objectWriter.WriteTree(projectTree));
            addFile(projectTree, project1_b_v2_txt, objectWriter);
            projectTree.Id = (objectWriter.WriteTree(projectTree));
            tree.Id = (objectWriter.WriteTree(tree));

            commit = new global::GitSharp.Core.Commit(repo)
                         {
                             Author = new PersonIdent(author, (0L), 60),
                             Committer = new PersonIdent(committer, (0L), 60),
                             Message = "Modified",
                             ParentIds = new[] { commitId },
                             TreeEntry = tree
                         };
            commit.Save();
            commitId = commit.CommitId;

            RefUpdate lck = repo.UpdateRef("refs/heads/master");
            Assert.IsNotNull(lck, "obtained lock");
            lck.NewObjectId = commitId;
            Assert.AreEqual(RefUpdate.RefUpdateResult.NEW, lck.forceUpdate());
        }
Exemplo n.º 24
0
        public void test026_CreateCommitMultipleparents()
        {
            db.Config.load();

            var           t = new global::GitSharp.Core.Tree(db);
            FileTreeEntry f = t.AddFile("i-am-a-file");

            writeTrashFile(f.Name, "and this is the data in me\n");
            t.Accept(new WriteTree(trash, db), TreeEntry.MODIFIED_ONLY);
            Assert.AreEqual(ObjectId.FromString("00b1f73724f493096d1ffa0b0f1f1482dbb8c936"),
                            t.TreeId);

            var c1 = new global::GitSharp.Core.Commit(db)
            {
                Author    = new PersonIdent(author, 1154236443000L, -4 * 60),
                Committer = new PersonIdent(committer, 1154236443000L, -4 * 60),
                Message   = "A Commit\n",
                TreeEntry = t
            };

            Assert.AreEqual(t.TreeId, c1.TreeId);
            c1.Save();
            ObjectId cmtid1 = ObjectId.FromString("803aec4aba175e8ab1d666873c984c0308179099");

            Assert.AreEqual(cmtid1, c1.CommitId);

            var c2 = new global::GitSharp.Core.Commit(db)
            {
                Author    = new PersonIdent(author, 1154236443000L, -4 * 60),
                Committer = new PersonIdent(committer, 1154236443000L, -4 * 60),
                Message   = "A Commit 2\n",
                TreeEntry = t
            };

            Assert.AreEqual(t.TreeId, c2.TreeId);
            c2.ParentIds = new[] { c1.CommitId };
            c2.Save();
            ObjectId cmtid2 = ObjectId.FromString("95d068687c91c5c044fb8c77c5154d5247901553");

            Assert.AreEqual(cmtid2, c2.CommitId);

            global::GitSharp.Core.Commit rm2 = db.MapCommit(cmtid2);
            Assert.AreNotSame(c2, rm2); // assert the parsed objects is not from the cache
            Assert.AreEqual(c2.Author, rm2.Author);
            Assert.AreEqual(c2.CommitId, rm2.CommitId);
            Assert.AreEqual(c2.Message, rm2.Message);
            Assert.AreEqual(c2.TreeEntry.TreeId, rm2.TreeEntry.TreeId);
            Assert.AreEqual(1, rm2.ParentIds.Length);
            Assert.AreEqual(c1.CommitId, rm2.ParentIds[0]);

            var c3 = new global::GitSharp.Core.Commit(db)
            {
                Author    = new PersonIdent(author, 1154236443000L, -4 * 60),
                Committer = new PersonIdent(committer, 1154236443000L, -4 * 60),
                Message   = "A Commit 3\n",
                TreeEntry = t
            };

            Assert.AreEqual(t.TreeId, c3.TreeId);
            c3.ParentIds = new[] { c1.CommitId, c2.CommitId };
            c3.Save();
            ObjectId cmtid3 = ObjectId.FromString("ce6e1ce48fbeeb15a83f628dc8dc2debefa066f4");

            Assert.AreEqual(cmtid3, c3.CommitId);

            global::GitSharp.Core.Commit rm3 = db.MapCommit(cmtid3);
            Assert.AreNotSame(c3, rm3); // assert the parsed objects is not from the cache
            Assert.AreEqual(c3.Author, rm3.Author);
            Assert.AreEqual(c3.CommitId, rm3.CommitId);
            Assert.AreEqual(c3.Message, rm3.Message);
            Assert.AreEqual(c3.TreeEntry.TreeId, rm3.TreeEntry.TreeId);
            Assert.AreEqual(2, rm3.ParentIds.Length);
            Assert.AreEqual(c1.CommitId, rm3.ParentIds[0]);
            Assert.AreEqual(c2.CommitId, rm3.ParentIds[1]);

            var c4 = new global::GitSharp.Core.Commit(db)
            {
                Author    = new PersonIdent(author, 1154236443000L, -4 * 60),
                Committer = new PersonIdent(committer, 1154236443000L, -4 * 60),
                Message   = "A Commit 4\n",
                TreeEntry = t
            };

            Assert.AreEqual(t.TreeId, c3.TreeId);
            c4.ParentIds = new[] { c1.CommitId, c2.CommitId, c3.CommitId };
            c4.Save();
            ObjectId cmtid4 = ObjectId.FromString("d1fca9fe3fef54e5212eb67902c8ed3e79736e27");

            Assert.AreEqual(cmtid4, c4.CommitId);

            global::GitSharp.Core.Commit rm4 = db.MapCommit(cmtid4);
            Assert.AreNotSame(c4, rm3); // assert the parsed objects is not from the cache
            Assert.AreEqual(c4.Author, rm4.Author);
            Assert.AreEqual(c4.CommitId, rm4.CommitId);
            Assert.AreEqual(c4.Message, rm4.Message);
            Assert.AreEqual(c4.TreeEntry.TreeId, rm4.TreeEntry.TreeId);
            Assert.AreEqual(3, rm4.ParentIds.Length);
            Assert.AreEqual(c1.CommitId, rm4.ParentIds[0]);
            Assert.AreEqual(c2.CommitId, rm4.ParentIds[1]);
            Assert.AreEqual(c3.CommitId, rm4.ParentIds[2]);
        }
Exemplo n.º 25
0
        public void test012_SubtreeExternalSorting()
        {
            ObjectId emptyBlob = new ObjectWriter(db).WriteBlob(new byte[0]);
            var t = new global::GitSharp.Core.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.Id = emptyBlob;
            e1.Id = emptyBlob;
            e2.Id = emptyBlob;
            e3.Id = emptyBlob;
            e4.Id = emptyBlob;

            t.Accept(new WriteTree(trash, db), TreeEntry.MODIFIED_ONLY);
            Assert.AreEqual(ObjectId.FromString("b47a8f0a4190f7572e11212769090523e23eb1ea"), t.Id);
        }
Exemplo n.º 26
0
        private void addFile(global::GitSharp.Core.Tree t, FileInfo f, ObjectWriter objectWriter)
        {
            ObjectId id = objectWriter.WriteBlob(f);

            t.AddEntry(new FileTreeEntry(t, id, f.Name.getBytes("UTF-8"), false));
        }
Exemplo n.º 27
0
 public void test024_createCommitNonAscii()
 {
     ObjectId emptyId = new ObjectWriter(db).WriteBlob(new byte[0]);
     var almostEmptyTree = new global::GitSharp.Core.Tree(db);
     almostEmptyTree.AddEntry(new FileTreeEntry(almostEmptyTree, emptyId, "empty".getBytes(), false));
     ObjectId almostEmptyTreeId = new ObjectWriter(db).WriteTree(almostEmptyTree);
     var commit = new global::GitSharp.Core.Commit(db)
                      {
                          TreeId = almostEmptyTreeId,
                          Author = new PersonIdent("Joe H\u00e4cker", "*****@*****.**", 4294967295000L, 60),
                          Committer = new PersonIdent("Joe Hacker", "*****@*****.**", 4294967295000L, 60),
                          Encoding = Encoding.GetEncoding("ISO-8859-1"),
                          Message = "\u00dcbergeeks"
                      };
     ObjectId cid = new ObjectWriter(db).WriteCommit(commit);
     var s = new Inspector(db).Inspect(cid);
     Assert.AreEqual("2979b39d385014b33287054b87f77bcb3ecb5ebf", cid.Name);
 }
Exemplo n.º 28
0
        public void testEmptyTreeCorruption()
        {
            ObjectId bId = ObjectId.FromString("abbbfafe3129f85747aba7bfac992af77134c607");
            RevTree tree_root, tree_A, tree_AB;
            RevCommit b;
            {
                global::GitSharp.Core.Tree root = new global::GitSharp.Core.Tree(db);
                global::GitSharp.Core.Tree A = root.AddTree("A");
                FileTreeEntry B = root.AddFile("B");
                B.Id = (bId);

                global::GitSharp.Core.Tree A_A = A.AddTree("A");
                global::GitSharp.Core.Tree A_B = A.AddTree("B");

                var ow = new ObjectWriter(db);
                A_A.Id = (ow.WriteTree(A_A));
                A_B.Id = (ow.WriteTree(A_B));
                A.Id = (ow.WriteTree(A));
                root.Id = (ow.WriteTree(root));

                tree_root = rw.parseTree(root.Id);
                tree_A = rw.parseTree(A.Id);
                tree_AB = rw.parseTree(A_A.Id);
                Assert.AreSame(tree_AB, rw.parseTree(A_B.Id));
                b = Commit(rw.parseTree(root.Id));
            }

            MarkStart(b);

            AssertCommit(b, objw.next());
            Assert.IsNull(objw.next());

            Assert.AreSame(tree_root, objw.nextObject());
            Assert.AreSame(tree_A, objw.nextObject());
            Assert.AreSame(tree_AB, objw.nextObject());
            Assert.AreSame(rw.lookupBlob(bId), objw.nextObject());
            Assert.IsNull(objw.nextObject());
        }
Exemplo n.º 29
0
        public void Write_Tree()
        {
            var t = new global::GitSharp.Core.Tree(db);
            FileTreeEntry f = t.AddFile("i-am-a-file");
            writeTrashFile(f.Name, "and this is the data in me\r\n\r\n");
            Assert.AreEqual(File.ReadAllText("Resources/single_file_commit/i-am-a-file"), File.ReadAllText(db.WorkingDirectory.FullName + "/i-am-a-file"));
            t.Accept(new WriteTree(trash, db), TreeEntry.MODIFIED_ONLY);
            var id = t.Id;

            int git_w1;
            int git_w2;
            int w1;
            int w2;

            using (var b1 = new BinaryReader(new Inspector(db).ContentStream(id)))
            using (var b2 = new BinaryReader(Inspector.ContentStream("Resources/single_file_commit", "917c130bd4fa5bf2df0c399dc1b03401860aa448")))
            {
                b1.BaseStream.Position = b1.BaseStream.Length - 21;
                b2.BaseStream.Position = b2.BaseStream.Length - 21;
                Assert.AreEqual(b2.ReadByte(), b1.ReadByte());

                git_w1 = b2.ReadInt32();
                git_w2 = b2.ReadInt32();
                var git_w3 = b2.ReadInt32();
                var git_w4 = b2.ReadInt32();
                var git_w5 = b2.ReadInt32();
                b2.BaseStream.Position = b2.BaseStream.Length - 20;
                var git_id = ObjectId.FromRaw(b2.ReadBytes(20));
                w1 = b1.ReadInt32();
                w2 = b1.ReadInt32();
            }

            Assert.AreEqual(git_w1,w1);
            Assert.AreEqual(git_w2, w2);

            Assert.AreEqual("917c130bd4fa5bf2df0c399dc1b03401860aa448", id.Name);
            var s_git = Inspector.Inspect("Resources/single_file_commit", "917c130bd4fa5bf2df0c399dc1b03401860aa448");
            var s = new Inspector(db).Inspect(id);
            Assert.AreEqual(s_git, s);
        }