2012-01-27 21 views
6

मैंने गिटशर्प को लिबिट 2 सर्प में उपयोग करने से मेरी परियोजना को आजमाने और माइग्रेट करने का निर्णय लिया है क्योंकि गितशर्प को सक्रिय रूप से बनाए रखा नहीं गया है। गिटशर्प के साथ मैं एक शाखा के दिए गए मेरे रेपो में चेक की गई किसी भी फाइल के कच्चे बाइट तक पहुंचने में सक्षम था। मैं LibGit2Sharp का उपयोग करके यह कैसे किया जाता है, इस बारे में किसी दस्तावेज़ या उदाहरण कोड का पता नहीं लगा सकता।मैं 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"); 
    } 
} 

इस विशेष परीक्षण में, ब्लॉब GitObject सीधे LookUp() विधि के माध्यम से लिया गया है। आप की Files संपत्ति से ब्लॉब्स तक पहुंच सकते हैं।

आपके अधिक विशिष्ट अनुरोध के संबंध में, निम्नलिखित इकाई परीक्षण आपको 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

बहुत बढ़िया। धन्यवाद दोस्त! – Nick

+0

खुशी है कि मैं आपकी मदद कर पाऊंगा :) – nulltoken

+0

इसके अलावा .. परीक्षण देखना एक अच्छा विचार है। – Nick

संबंधित मुद्दे