Git पुस्तक में एक इंडेक्स शामिल है पर एक लेख है :
सूचकांक एक द्विआधारी फ़ाइल है (आमतौर पर रखी जाती है .git/index
) जिसमें पथ नामों की एक क्रमबद्ध सूची होती है, जिनमें से प्रत्येक अनुमतियों और एक धुंधली वस्तु का SHA1 होता है; git ls-files
आप सूचकांक की सामग्री दिखा सकते हैं:
$ git ls-files --stage
100644 63c918c667fa005ff12ad89437f2fdc80926e21c 0 .gitignore
100644 5529b198e8d14decbe4ad99db3f7fb632de0439d 0 .mailmap
वयस्क Git समस्या है कि संरचना पर कुछ और जानकारी देता है:
सूचकांक git में सबसे महत्वपूर्ण डेटा संरचनाओं में से एक है।
यह पथों की सूची और उनके ऑब्जेक्ट नामों की रिकॉर्डिंग करके एक आभासी कार्यशील वृक्ष की स्थिति का प्रतिनिधित्व करता है और अगले पेड़ की वस्तु को लिखने के लिए एक स्टेजिंग क्षेत्र के रूप में कार्य करता है।
राज्य इस अर्थ में "आभासी" है कि यह जरूरी नहीं है, और अक्सर काम करने वाले पेड़ में फाइलों से मेल नहीं खाता है।
अधिक देखने के लिए, cf. " git / git / प्रलेखन / तकनीकी / सूचकांक-format.txt ":
Git अनुक्रमणिका फ़ाइल में निम्न प्रारूप है
सभी बाइनरी नंबर नेटवर्क बाइट ऑर्डर में हैं।
संस्करण 2 यहाँ वर्णित है जब तक कि अन्यथा न कहा गया हो।
- एक 12-बाइट हेडर जिसमें शामिल हैं:
- 4-बाइट हस्ताक्षर :
हस्ताक्षर {' D
', ' I
', ' R
', ' C
'} ("के लिए खड़ा है dircache
)"
- 4-बाइट संस्करण संख्या :
वर्तमान समर्थित संस्करण 2, 3 और 4 हैं।
- सूचकांक प्रविष्टियों की 32-बिट संख्या।
- अनुक्रमित अनुक्रमित प्रविष्टियों की एक संख्या ।
- एक्सटेंशन :
एक्सटेंशन को हस्ताक्षर द्वारा पहचाना जाता है।
यदि Git उन्हें नहीं समझता है तो वैकल्पिक एक्सटेंशन को अनदेखा किया जा सकता है।
Git वर्तमान में कैश्ड ट्री का समर्थन करता है और पूर्ववत एक्सटेंशन को हल करता है।
- 4-बाइट एक्सटेंशन हस्ताक्षर। यदि पहली बाइट '
A
' .. ' Z
' है तो विस्तार वैकल्पिक है और इसे नजरअंदाज किया जा सकता है।
- विस्तार का 32-बिट आकार
- एक्सटेंशन डेटा
- इस चेकसम से पहले इंडेक्स फ़ाइल की सामग्री पर 160-बिट SHA-1।
mljrg टिप्पणी :
यदि अनुक्रमणिका वह स्थान है जहां अगली प्रतिबद्ध तैयार की जाती है, तो git ls-files -s
प्रतिबद्ध होने के बाद कुछ भी क्यों नहीं " " लौटाता है?
क्योंकि सूचकांक दर्शाता है कि क्या ट्रैक किया जा रहा है , और सही होने के बाद, जो ट्रैक किया जा रहा है, वह अंतिम प्रतिबद्ध ( git diff --cached
रिटर्न कुछ नहीं) के समान है ।
इसलिए git ls-files -s
ट्रैक की गई सभी फाइलों (ऑब्जेक्ट का नाम, मोड बिट्स और आउटपुट में स्टेज नंबर) को सूचीबद्ध करता है।
उस सूची (तत्व को ट्रैक किया गया) को एक कमिट की सामग्री के साथ आरंभीकृत किया गया है।
जब आप शाखा को स्विच करते हैं, तो अनुक्रमणिका सामग्री उस शाखा के संदर्भ में रीसेट हो जाती है जिसे आपने अभी-अभी स्विच किया है।
Git 2.20 (Q4 2018) एक सूचकांक प्रविष्टि ऑफसेट तालिका (IEOT) जोड़ता है :
देखें प्रतिबद्ध 77ff112 , 3,255,089 प्रतिबद्ध , abb4bb8 प्रतिबद्ध , c780b9c प्रतिबद्ध , 3b1d9e0 प्रतिबद्ध , 371ed0d प्रतिबद्ध (10 अक्टू 2018) द्वारा बेन ज़िंदादिल ( benpeart
) । Nguy Thn Thái Ngọc Duy ( ) द्वारा प्रतिबद्ध 252d079 (26 सितंबर 2018)
देखें । (द्वारा विलय Junio सी Hamano - - में प्रतिबद्ध e27bfaa , 19 अक्टू 2018)pclouds
gitster
ieot: इंडेक्स एंट्री ऑफ़सेट टेबल (IEOT) एक्सटेंशन जोड़ें
यह पैच सूचकांक में अतिरिक्त डेटा जोड़कर सूचकांक को लोड करने की सीपीयू लागत को संबोधित करने में सक्षम बनाता है जो हमें कैश प्रविष्टियों की कुशलता से बहु-धागाकरण और रूपांतरण की अनुमति देगा।
यह एक (वैकल्पिक) इंडेक्स एक्सटेंशन को जोड़कर इसे पूरा करता है जो कि इंडेक्स फाइल में कैश एंट्रीज के ब्लॉक के लिए ऑफसेट है।
वी 4 इंडेक्स के लिए यह काम करने के लिए, कैश प्रविष्टियों को लिखते समय, यह समय-समय पर वर्तमान प्रविष्टि को एन्कोडिंग द्वारा उपसर्ग-संपीड़न को "रीसेट" करता है जैसे कि पिछली प्रविष्टि के लिए पथ का नाम पूरी तरह से अलग है और IEOT में उस प्रविष्टि के ऑफसेट को बचाता है ।
मूल रूप से, V4 अनुक्रमित के साथ, यह उपसर्ग-संकुचित प्रविष्टियों के ब्लॉक में ऑफसेट उत्पन्न करता है।
साथ नई index.threads config सेटिंग , सूचकांक लोड हो रहा है अब तेजी से होता है।
परिणामस्वरूप ( IEOT का उपयोग करके ), Git 2.23 (Q3 2019) के लिए 7bd9631 क्लीन-अप read-cache.c load_cache_entries_threaded()
फ़ंक्शन करें।
देखें प्रतिबद्ध 8373037 , d713e88 प्रतिबद्ध , d92349d प्रतिबद्ध , 113c29a प्रतिबद्ध , प्रतिबद्ध c95fc72 , प्रतिबद्ध 7a2a721 , c016579 प्रतिबद्ध , प्रतिबद्ध be27fb7 , प्रतिबद्ध 13a1781 , प्रतिबद्ध 7bd9631 , प्रतिबद्ध 3c1dce8 , cf7a901 प्रतिबद्ध , प्रतिबद्ध d64db5b , प्रतिबद्ध 76a7bc0 (09 मई 2019) द्वारा जेफ राजा ( peff
) ।
(द्वारा विलय Junio सी Hamano - gitster
- में प्रतिबद्ध c0e78f7 , 13 जून 2019)
read-cache: थ्रेडेड लोड से अप्रयुक्त पैरामीटर ड्रॉप करें
load_cache_entries_threaded()
समारोह एक लेता src_offset
पैरामीटर है कि यह उपयोग नहीं करता। यह 77ff112 में इसकी स्थापना के बाद से किया गया है read-cache
: ( कार्यकर्ता सूत्र, 2018-10-10, Git v2.20.0-rc0 पर लोड कैश प्रविष्टियों)।
मेलिंग सूची पर खुदाई, वह पैरामीटर श्रृंखला के पहले पुनरावृत्ति का हिस्सा था , लेकिन जब IEOT एक्सटेंशन का उपयोग करके कोड स्विच किया गया तो अनावश्यक हो गया।