public void GetHeadAsShaTest()
        {
            this.InitializeSourceControl();
            this.AddCommits(2);

            var newHead         = this.LibGit2Repository.Head.Tip.Parents.Single();
            var newHeadObjectId = GitObjectId.Parse(newHead.Sha);

            Commands.Checkout(this.LibGit2Repository, this.LibGit2Repository.Head.Tip.Parents.Single());

            using (var repository = GitRepository.Create(this.RepoPath))
            {
                var detachedHead = repository.GetHeadAsReferenceOrSha();
                var reference    = Assert.IsType <GitObjectId>(detachedHead);
                Assert.Equal(newHeadObjectId, reference);

                Assert.Equal(newHeadObjectId, repository.GetHeadCommitSha());

                var headCommit = repository.GetHeadCommit();
                Assert.NotNull(headCommit);
                Assert.Equal(newHeadObjectId, headCommit.Value.Sha);
            }
        }
Ejemplo n.º 2
0
        public void ReadTest()
        {
            using (Stream stream = TestUtilities.GetEmbeddedResource(@"ManagedGit\commit-d56dc3ed179053abef2097d1120b4507769bcf1a"))
            {
                var commit = GitCommitReader.Read(stream, GitObjectId.Parse("d56dc3ed179053abef2097d1120b4507769bcf1a"), readAuthor: true);

                Assert.Equal("d56dc3ed179053abef2097d1120b4507769bcf1a", commit.Sha.ToString());
                Assert.Equal("f914b48023c7c804a4f3be780d451f31aef74ac1", commit.Tree.ToString());

                Assert.Collection(
                    commit.Parents,
                    c => Assert.Equal("4497b0eaaa89abf0e6d70961ad5f04fd3a49cbc6", c.ToString()),
                    c => Assert.Equal("0989e8fe0cd0e0900173b26decdfb24bc0cc8232", c.ToString()));

                var author = commit.Author.Value;

                Assert.Equal("Andrew Arnott", author.Name);
                Assert.Equal(new DateTimeOffset(2020, 10, 6, 13, 40, 09, TimeSpan.FromHours(-6)), author.Date);
                Assert.Equal("*****@*****.**", author.Email);

                // Committer and commit message are not read
            }
        }
        public void GetOffsetFromPartialTest()
        {
            var indexFile = Path.GetTempFileName();

            using (Stream resourceStream = TestUtilities.GetEmbeddedResource(@"ManagedGit\pack-7d6b2c56ffb97eedb92f4e28583c093f7ee4b3d9.idx"))
                using (FileStream stream = File.Open(indexFile, FileMode.Open))
                {
                    resourceStream.CopyTo(stream);
                }

            using (FileStream stream = File.OpenRead(indexFile))
                using (var reader = new GitPackIndexMappedReader(stream))
                {
                    // Offset of an object which is present
                    (var offset, var objectId) = reader.GetOffset(new byte[] { 0xf5, 0xb4, 0x01, 0xf4 });
                    Assert.Equal(12, offset);
                    Assert.Equal(GitObjectId.Parse("f5b401f40ad83f13030e946c9ea22cb54cb853cd"), objectId);

                    (offset, objectId) = reader.GetOffset(new byte[] { 0xd6, 0x78, 0x15, 0x52 });
                    Assert.Equal(317, offset);
                    Assert.Equal(GitObjectId.Parse("d6781552a0a94adbf73ed77696712084754dc274"), objectId);

                    // null for an object which is not present
                    (offset, objectId) = reader.GetOffset(new byte[] { 0x00, 0x00, 0x00, 0x00 });
                    Assert.Null(offset);
                    Assert.Null(objectId);
                }

            try
            {
                File.Delete(indexFile);
            }
            catch (UnauthorizedAccessException)
            {
                // TBD: Figure out what's keeping a lock on the file. Seems to be unique to Windows.
            }
        }
Ejemplo n.º 4
0
        public void EqualsCommitTest()
        {
            var commit = new GitCommit()
            {
                Sha = GitObjectId.Parse(this.shaAsByteArray),
            };

            var commit2 = new GitCommit()
            {
                Sha = GitObjectId.Parse(this.shaAsByteArray),
            };

            var emptyCommit = new GitCommit()
            {
                Sha = GitObjectId.Empty,
            };

            // Must be equal to itself
            Assert.True(commit.Equals(commit2));
            Assert.True(commit.Equals(commit2));

            // Not equal to other object ids
            Assert.False(commit.Equals(emptyCommit));
        }
Ejemplo n.º 5
0
 public GitTreeEntry(string name, bool isFile, GitObjectId sha)
 {
     this.Name   = name;
     this.IsFile = isFile;
     this.Sha    = sha;
 }
        public void ToStringTest()
        {
            var objectId = GitObjectId.Parse(this.shaAsByteArray);

            Assert.Equal(shaAsHexString, objectId.ToString());
        }
        public void TryParse_ValidValue(string value)
        {
            var parsed = new GitObjectId(value);

            Assert.Equal(value, parsed.ToString());
        }
Ejemplo n.º 8
0
 public void AppendParameter(GitObjectId value)
 {
     AppendParameter(value.ToString());
 }