2012-01-27 3 views
6

Я решил попробовать и перенести свой проект с помощью GitSharp на LibGit2Sharp, так как GitSharp больше не поддерживается. С GitSharp я смог получить доступ к необработанным байтам любого файла, зарегистрированного в моем репо, с учетом ветки. Я не могу найти какую-либо документацию или примерный код того, как это делается с помощью LibGit2Sharp.Как я могу получить двоичные данные из репозитория Git с помощью LibGit2Sharp?

Может ли кто-нибудь дать мне и пример того, как это делается?

ответ

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"); 
    } 
} 

В данном конкретном тесте Blob GitObject непосредственно получен с помощью метода LookUp(). Вы также можете получить доступ к Blobs из свойства Files файла 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 (как абстрактное TreeEntry). Таким образом, использование броска.

+0

Awesome. Спасибо приятель! – Nick

+0

Рад, что я смог вам помочь :) – nulltoken

+0

Также .. просмотр тестов - хорошая идея. – Nick