Exemplo n.º 1
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.º 2
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.º 3
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.º 4
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());
        }