如何使用LibGit2Sharp从Git存储库中获取文件二进制数据?

时间:2012-01-27 18:43:27

标签: c# git gitsharp libgit2sharp

我决定尝试将我的项目从使用GitSharp迁移到LibGit2Sharp,因为不再主动维护GitSharp。使用GitSharp,我能够在给定分支的情况下访问检查到我的仓库中的任何文件的原始字节。我无法使用LibGit2Sharp找到任何文档或示例代码。

有人能举例说明这是怎么做到的吗?

1 个答案:

答案 0 :(得分:3)

Blob类型公开了Content属性,该属性返回byte[]

BlobFixture.cs 文件中提取以下测试,并演示此属性的使用情况。

[Test]
public void CanReadBlobContent()
{
    using (var repo = new Repository(BareTestRepoPath))
    {
        var blob = repo.Lookup<Blob>("a8233120f6ad708f843d861ce2b7228ec4e3dec6");
        byte[] bytes = blob.Content;
        bytes.Length.ShouldEqual(10);

        string content = Encoding.UTF8.GetString(bytes);
        content.ShouldEqual("hey there\n");
    }
}

在此特定测试中,通过LookUp()方法直接检索Blob GitObject。您还可以从Files的{​​{1}}属性访问Blob。

关于更具体的请求,以下单元测试应显示如何从Tree 的提示访问Blob的原始字节。

Branch

注意:此测试显示了访问[Test] public void CanRetrieveABlobContentFromTheTipOfABranch() { using (var repo = new Repository(BareTestRepoPath)) { Branch branch = repo.Branches["br2"]; Commit tip = branch.Tip; Blob blob = (Blob)tip["README"].Target; byte[] content = blob.Content; content.Length.ShouldEqual(10); } } 的另一种方式(作为抽象Blob)。因此,使用演员。