簡體   English   中英

如何使用LibGit2Sharp從Git存儲庫中獲取文件二進制數據?

[英]How can I get file binary data out of Git repository using LibGit2Sharp?

我決定嘗試將我的項目從使用GitSharp遷移到LibGit2Sharp,因為不再主動維護GitSharp。 使用GitSharp,我能夠在給定分支的情況下訪問檢查到我的倉庫中的任何文件的原始字節。 我無法使用LibGit2Sharp找到任何文檔或示例代碼。

有人能給我以及如何做到這一點的例子嗎?

Blob類型公開一個返回byte[]Content屬性。

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。 您還可以從Tree的“ Files屬性訪問Blob。

關於更具體的請求,以下單元測試應該向您展示如何從Branch的尖端訪問Blob的原始字節

[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另一種方式(作為抽象TreeEntry )。 因此,使用演員表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM