public void ReadMergeCommitTest() { // This commit has two parents using (var compressedFile = File.OpenRead(Path.Combine(RepositoryPath, "fork1/.git/objects/22/abd96d9c295c43ba96c60d2f44b52697c07586"))) using (var commitStream = GitObjectStream.Create(compressedFile, -1)) { commitStream.ReadObjectTypeAndLength("commit"); var commit = GitCommitReader.Read(commitStream, GitObjectId.Parse("22abd96d9c295c43ba96c60d2f44b52697c07586")); Assert.Collection( commit.Parents, c => Assert.Equal("ad86ad89e56fdf14a307d06af6efa7930218abba", c.ToString()), c => Assert.Equal("01d33864bd1a114e619f9e7c22f448cca6123b34", c.ToString())); } }
public void ReadTest() { using (Stream rawStream = TestUtilities.GetEmbeddedResource(@"ManagedGit\3596ffe59898103a2675547d4597e742e1f2389c.gz")) using (GitObjectStream stream = new GitObjectStream(rawStream, "commit")) using (var sha = SHA1.Create()) { Assert.Equal(137, stream.Length); var deflateStream = Assert.IsType <DeflateStream>(stream.BaseStream); Assert.Same(rawStream, deflateStream.BaseStream); Assert.Equal("commit", stream.ObjectType); Assert.Equal(0, stream.Position); var hash = sha.ComputeHash(stream); Assert.Equal("U1WYLbBP+xD47Y32m+hpCCTpnLA=", Convert.ToBase64String(hash)); Assert.Equal(stream.Length, stream.Position); } }
protected override void LoadBody(GitObjectStream content) { var body = content.ReadToEnd().ToAsciiString(); var lines = body.Split('\n'); foreach (var line in lines) { if (line.StartsWith("tree")) TreeId = GetTreeId(line); if (line.StartsWith("author")) Author = GetSignature(line); if (line.StartsWith("committer")) Committer = GetSignature(line); } Comment = ReadComment(body); }
public void Load(GitObjectStream content) { content.ReadBytes(SecLength); content.ReadBytes(NSecLength); }
protected override void LoadBody(GitObjectStream content) { Content = content.ReadToEnd().ToAsciiString(); }
private string ReadType(GitObjectStream content) { byte[] word = content.ReadWord(); return word.ToAsciiString(); }
private long ReadContentLength(GitObjectStream content) { byte[] word = content.ReadToNull(); return long.Parse(word.ToAsciiString()); }
protected virtual void LoadHeader(GitObjectStream content) { Type = ReadType(content); ContentLength = ReadContentLength(content); }
protected abstract void LoadBody(GitObjectStream content);
public void Load(GitObjectStream content) { LoadHeader(content); LoadBody(content); }