के साथ एक प्रतिबद्धता और उसके माता-पिता के बीच परिवर्तन प्राप्त करें मैं libgit2sharp (libgit2 के लिए एक सी # रैपर) के साथ काम कर रहा हूं और मुद्दों में भाग रहा हूं क्योंकि इसमें बहुत सारी कार्यक्षमता नहीं है जिसके लिए मैं उम्मीद कर रहा हूं (उम्मीद है कि मैं योगदान दे सकता हूं यह जल्द ही; यह वास्तव में उपयोगी प्रोजेक्ट की तरह लगता है)libgit2sharp
जो चीज़ मैं अभी करने की कोशिश कर रहा हूं उसे किसी विशेष प्रतिबद्धता और उसके माता-पिता से बदली गई फ़ाइलों की एक सूची मिलती है। मैं यह समझने की कोशिश नहीं करूंगा कि विलय और उसके दो माता-पिता के बीच क्या बदल गया है। मुझे नियमित प्रतिबद्धता में अधिक दिलचस्पी है।
ये लोग (https://github.com/libgit2/libgit2sharp/issues/89) कुछ इसी तरह काम कर रहे हैं। मुझे लगता है कि उनकी प्रक्रिया एक अच्छा विचार है, लेकिन मैं जीआईटी आंतरिक की मेरी समझ पर थोड़ा कमजोर हूं (जीआईटी के लिए अंतिम उपयोगकर्ता की मार्गदर्शिका पर गाइड की संख्या है लेकिन आंतरिक संरचना पर इतना अधिक नहीं है)
मुझे उत्सुकता है कि कैसे जीआईटी खुद एक "गिट diff" कमांड करता है। माना जाता है कि जीआईटी वास्तव में डेल्टा को स्टोर नहीं करता है बल्कि फ़ाइल का एक पूर्ण संस्करण है (यदि यह अपरिवर्तित है तो यह केवल मौजूदा SHA को इंगित करेगा। यह जानकारी विभिन्न स्रोतों जैसे http://xentac.net/2012/01/19/the-real-difference-between-git-and-mercurial.html) से मिल सकती है। ऐसा लगता है कि दो प्रतिबद्धताओं (मेरे मामले में एक विशेष प्रतिबद्धता और उसके एकल माता-पिता) के बीच परिवर्तन प्राप्त करना कठिन होता है क्योंकि डेटा प्रतिबद्धता के हिस्से के रूप में संग्रहीत नहीं होता है (जो स्पष्ट है कि यदि आप libgit2sharp के Commit.cs में Commit क्लास की जांच करते हैं तो यह स्पष्ट है। फ़ाइल)।
मैं जो प्रतिबद्धता से पहुंच प्राप्त कर सकता हूं वह पेड़ है। क्या यह जानकारी खोजने के लिए निम्नलिखित करना समझदारी होगी:
1) वांछित प्रतिबद्धता से शुरू करें और पेड़ पर चलें और सभी SHA मानों को एक सेट में स्टोर करें।
2) वांछित प्रतिबद्धता के लिए माता-पिता से शुरू करें और अपने पेड़ को अपने सभी ब्लॉब SHA मानों को किसी अन्य सेट में स्टोर करने के लिए चलाएं।
3) फ़ाइलों को बदलने के लिए एसएचए उन फ़ाइलों को होगा जो दो सेटों के चौराहे में नहीं हैं।
समस्या जो मैं इस दृष्टिकोण से देखता हूं वह ऐसा नहीं लगता है कि ब्लॉब के SHA मान से फ़ाइल नाम प्राप्त करने का कोई तरीका नहीं है (मुझे ऐसा कुछ भी नहीं दिख रहा है जो libgit2sharp की Blob.cs फ़ाइल में ऐसा कर सकता है)।
मुझे पता है कि इस प्रश्न के बहुत सारे पहलू हैं लेकिन वे गिट से डेटा का एक विशेष टुकड़ा प्राप्त करने के लिए इस बड़े लक्ष्य का हिस्सा हैं।
धन्यवाद।
सावधान रहें कि अलग-अलग फ़ाइल नामों के साथ अलग-अलग 'TreeEntries' द्वारा अपने एसएचए के माध्यम से उसी 'ब्लॉब' को इंगित किया जाएगा। ऐसा तब होगा जब फ़ाइलों की एक ही सटीक सामग्री हो। – nulltoken