Как я могу получить двоичные данные файла из репозитория Git, используя LibGit2Sharp?
Я решил попробовать перенести мой проект с GitSharp на LibGit2Sharp, поскольку GitSharp больше не поддерживается. С GitSharp я смог получить доступ к необработанным байтам любого файла, зарегистрированного в моем репо, с учетом ветки. Я не могу найти какую-либо документацию или пример кода, как это делается с помощью LibGit2Sharp.
Может кто-нибудь привести мне пример того, как это делается?
1 ответ
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");
}
}
В этом конкретном тесте Blob GitObject напрямую извлекается через LookUp()
метод. Вы также можете получить доступ к Blobs из Files
свойство Tree
,
Что касается вашего более конкретного запроса, следующий модульный тест должен показать вам, как получить доступ к необработанным байтам большого двоичного объекта из кончика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
(как реферат TreeEntry
). Таким образом, использование актерского состава.