6
由於GitSharp不再被主動維護,我決定嘗試將我的項目從使用GitSharp遷移到LibGit2Sharp。使用GitSharp,我能夠訪問任何文件的原始字節,並將其簽入分支。我找不到任何文檔或示例代碼如何使用LibGit2Sharp完成此操作。如何使用LibGit2Sharp從Git存儲庫中獲取文件二進制數據?
有人可以給我和如何做到這一點的例子嗎?
由於GitSharp不再被主動維護,我決定嘗試將我的項目從使用GitSharp遷移到LibGit2Sharp。使用GitSharp,我能夠訪問任何文件的原始字節,並將其簽入分支。我找不到任何文檔或示例代碼如何使用LibGit2Sharp完成此操作。如何使用LibGit2Sharp從Git存儲庫中獲取文件二進制數據?
有人可以給我和如何做到這一點的例子嗎?
Blob
類型公開屬性,該屬性返回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。您還可以訪問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
)的另一方式。因此,演員的使用。
太棒了。多謝,夥計! – Nick 2012-01-27 19:27:33
很高興我已經能夠幫助你:) – nulltoken 2012-01-27 19:47:43
另外..查看測試是一個好主意。 – Nick 2012-01-27 19:57:25