2012-01-27 24 views
6

私は、GitSharpがLibGit2Sharpを使用することから、GitSharpがもはや積極的に維持されていないため、私のプロジェクトをGitSharpから移行することに決めました。私はGitSharpを使って、ブランチを与えられたレポにチェックインされたファイルの生のバイトにアクセスすることができました。私はLibGit2Sharpを使ってこれがどのように行われたかのドキュメンテーションやサンプルコードを見つけることができません。LibGit2Sharpを使用してファイルバイナリデータをGitリポジトリから取得するにはどうすればよいですか?

誰かが私に与えることができ、これがどのように行われたかの例はありますか?

答えて

3

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

、ブロブGitObject直接LookUp()方法によって取得されます。 TreeFilesプロパティから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など)にアクセスする別の方法を示しています。したがって、キャストの使用。

+0

驚くばかりです。ありがとう、相棒! – Nick

+0

喜んで私はあなたを助けることができました:) – nulltoken

+0

また..テストを表示することは良いアイデアです。 – Nick

関連する問題