2012-01-27 12 views
6

GitSharp artık aktif olarak sürdürülmediğinden, projemi GitSharp kullanarak LibGit2Sharp'a geçirmeye çalıştım. GitSharp ile bir şube verilen repo'mdaki herhangi bir dosyanın ham baytlarına erişebildim. LibGit2Sharp kullanarak bunun nasıl yapıldığına dair herhangi bir belge veya örnek kodu bulamıyorum.LibGit2Sharp kullanarak Git veri deposundan ikili veriyi nasıl alabilirim?

Birisi bana bunun nasıl yapıldığına dair bir örnek verebilir mi?

cevap

3

Blob türü, byte[] değerini döndüren Content özelliğini görüntüler.

Aşağıdaki sınama, BlobFixture.cs dosyadan ayıklanır ve bu özelliğin kullanımını gösterir. Bu özel testte

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

, Kabarcık GitObject şirketinden LookUp() yöntemiyle alınır. Blob'lara, Tree'un Files özelliğinden de erişebilirsiniz. sizin daha özel isteğinize istinaden

aşağıdaki birim test nasıl bir Branch ucundan Kabarcık ham bayt erişmek için size göstermelidir.

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

Not: Bu test Blob (soyut TreeEntry gibi) erişmek için başka bir yol gösterilmiştir. Böylece, dökümün kullanımı.

+0

Harika. Tesekkurler dostum! – Nick

+0

Sevindim sana yardım edemedim :) – nulltoken

+0

Ayrıca .. testlere bakmak iyi bir fikir. – Nick