.git-blame-ignore-revs संस्करण 2.23 में पेश किया गया एक Git फीचर है जो आपको git दोष परिणामों में विशिष्ट प्रतिबद्धताओं को अनदेखा करने की अनुमति देता है। यह बल्क कमिट के लिए विशेष रूप से उपयोगी है जो कोड की वास्तविक कार्यक्षमता में बदलाव किए बिना बड़ी संख्या में लाइनें बदलता है, जैसे कि फ़ॉर्मेटिंग परिवर्तन, नाम बदलना, या कोडबेस में कोडिंग मानकों को लागू करना। इन गैर-कार्यात्मक परिवर्तनों को अनदेखा करके, गिट दोष सार्थक संपादनों पर ध्यान केंद्रित कर सकता है जो कोड के पीछे के संदर्भ और तर्क को समझाते हैं।
जब आप किसी फ़ाइल पर गिट ब्लेम का उपयोग करते हैं, तो यह आपको दिखाता है कि लेखक और टाइमस्टैम्प के साथ फ़ाइल की प्रत्येक पंक्ति को अंतिम बार किसने बदला था। यह यह पता लगाने के लिए उपयोगी है कि किसी विशेष पंक्ति को क्यों बदला गया। हालाँकि, यदि कोई बड़ी प्रतिबद्धता जो विशुद्ध रूप से स्वरूपण परिवर्तन करती है, जैसे प्रीटियर लागू करना, इतिहास का हिस्सा है, तो गिट दोष कई पंक्तियों के लिए उस प्रतिबद्धता को इंगित कर सकता है। इससे वास्तविक कार्यात्मक परिवर्तन इतिहास का पता लगाना कठिन हो जाता है।
उदाहरण के लिए, यदि आपकी टीम संपूर्ण कोडबेस को पुन: स्वरूपित करने के लिए प्रीटियर या ईएसलिंट जैसे टूल का उपयोग करती है, तो परिणामी प्रतिबद्धता कोड की हजारों पंक्तियों को छू सकती है। .git-blame-ignore-revs के बिना, git ब्लेम इस प्रतिबद्धता को प्रत्येक प्रभावित पंक्ति के लिए जिम्मेदार के रूप में दिखाएगा, जो प्रत्येक पंक्ति के पीछे के अधिक सार्थक इतिहास को अस्पष्ट कर सकता है।
.git-blame-ignore-revs का उपयोग करके, आप गिट ब्लेम को इन कमिटों को छोड़कर उन महत्वपूर्ण परिवर्तनों पर ध्यान केंद्रित करने के लिए कह सकते हैं।
इस सुविधा का उपयोग कैसे करें यह समझने के लिए, आइए रिएक्ट रिपॉजिटरी से एक उदाहरण देखें।
रिएक्ट सोर्स कोड में बल्क कमिट शामिल हैं जहां प्रीटियर जैसे टूल पूरे प्रोजेक्ट में चलाए गए थे। यहां दो ऐसी प्रतिबद्धताएं हैं:
2. प्रतिबद्ध: fd2b3e1
संदेश: कंपाइलर: अनफोर्क प्रिटियर कॉन्फिग
इस कमिट में प्रीटियर कॉन्फ़िगरेशन के और अपडेट शामिल हैं, जो रिपॉजिटरी में सभी .ts और .tsx फ़ाइलों को प्रभावित करते हैं।
ये कमिट केवल फ़ॉर्मेटिंग से संबंधित हैं और यह जांच करते समय सार्थक संदर्भ प्रदान नहीं करते हैं कि कोड की एक पंक्ति इस तरह क्यों लिखी गई थी।
गिट ब्लेम को इन बल्क फ़ॉर्मेटिंग कमिट्स को अनदेखा करने के लिए, हम रिपॉजिटरी के रूट में एक .git-blame-ignore-revs फ़ाइल बना सकते हैं।
touch .git-blame-ignore-revs
2. फ़ाइल में प्रासंगिक कमिट हैश जोड़ें, यह समझाते हुए कि प्रत्येक कमिट को अनदेखा क्यों किया जा रहा है। इस मामले में, हम पहले पहचाने गए दो कमिट जोड़ देंगे:
# Prettier formatting changes c998bb1ed4b3285398c9c7797135d3f060243c6a fd2b3e13d330a4559f5aa21462e1cb2cbbcf144b
3. .git-blame-ignore-revs फ़ाइल को रिपॉजिटरी में सहेजें। इस फ़ाइल को आपके कोड के साथ संस्करणित किया जा सकता है, जिससे पूरी टीम को अनदेखा किए गए कमिट की समान सूची का उपयोग करने की अनुमति मिलती है।
हर बार जब आप git ब्लेम का उपयोग करते हैं तो --ignore-revs-file विकल्प टाइप करने से बचने के लिए, आप .git-blame-ignore-revs फ़ाइल का स्वचालित रूप से उपयोग करने के लिए Git को कॉन्फ़िगर कर सकते हैं।
git config blame.ignoreRevsFile .git-blame-ignore-revs
यह सुनिश्चित करता है कि जब भी कोई इस रिपॉजिटरी में गिट ब्लेम चलाता है, तो गिट स्वचालित रूप से .git-blame-ignore-revs में सूचीबद्ध कमिट्स को अनदेखा कर देगा।
आइए देखें कि यह व्यवहार में कैसे काम करता है। बल्क फ़ॉर्मेटिंग प्रतिबद्धताओं को नज़रअंदाज किए बिना, गिट दोष दिखा सकता है:
$ git blame src/someFile.tsx c998bb1e (Joe Bloggs 2023-03-15 10:00:00 0200 1) import React from 'react'; fd2b3e13 (Alan 2023-04-01 14:15:30 0200 2) function App() { c998bb1e (Joe Bloggs 2023-03-15 10:00:00 0200 3) returnHello, world!; fd2b3e13 (Ben 2023-04-01 14:15:30 0200 4) }
यह आउटपुट इंगित करता है कि लाइन 1 और 3 में अंतिम परिवर्तन प्रीटियर फ़ॉर्मेटिंग कमिट (c998bb1e) के कारण था, और लाइन 2 और 4 को एक अन्य बल्क कमिट (fd2b3e13) में संशोधित किया गया था। चूँकि ये स्वरूपण परिवर्तन हैं, यह समझने में मददगार नहीं है कि इन पंक्तियों के पीछे वास्तविक तर्क किसने प्रस्तुत किया।
.git-blame-ignore-revs को कॉन्फ़िगर करने के बाद, git ब्लेम चलाने से बल्क कमिट्स छूट जाएंगी और वास्तविक इतिहास दिखाई देगा:
$ git blame src/someFile.tsx a23d9b34 (May 2022-12-01 09:30:00 0200 1) import React from 'react'; b12e45a6 (JJ 2022-12-05 11:45:15 0200 2) function App() { a23d9b34 (Joe 2022-12-01 09:30:00 0200 3) returnHello, world!; b12e45a6 (Ram 2022-12-05 11:45:15 0200 4) }
अब, गिट ब्लेम महत्वहीन फ़ॉर्मेटिंग परिवर्तनों को अनदेखा करते हुए, लाइनों को सही कमिट्स का श्रेय देता है। यह हमें उपयोगी जानकारी देता है, जिससे पता चलता है कि वास्तविक कार्यात्मक परिवर्तन किसने किए।
Git 2.23 में .git-blame-ignore-revs सुविधा बल्क फ़ॉर्मेटिंग या शैली परिवर्तन वाले प्रोजेक्ट्स के लिए गेम-चेंजर है। एक .git-blame-ignore-revs फ़ाइल सेट करके और अपनी रिपॉजिटरी को कॉन्फ़िगर करके, आप कोडिंग मानकों को लागू कर सकते हैं, प्रीटियर जैसे टूल चला सकते हैं, या दोष इतिहास को प्रदूषित करने की चिंता किए बिना रिफैक्टर कोड चला सकते हैं।
इस दृष्टिकोण के साथ, आपकी टीम सार्थक परिवर्तनों को ट्रैक करने की क्षमता का त्याग किए बिना आत्मविश्वास से कोड की गुणवत्ता और स्वरूपण में सुधार कर सकती है, यह सुनिश्चित करते हुए कि गिट दोष कोड की प्रत्येक पंक्ति के पीछे के इतिहास और तर्क को समझने के लिए एक मूल्यवान उपकरण बना हुआ है।
थिंक थ्रू में, हम ओपन-सोर्स परियोजनाओं में उपयोग की जाने वाली उन्नत कोडबेस वास्तुशिल्प अवधारणाओं को सिखाने के मिशन पर हैं।
नेक्स्ट.जेएस/रिएक्ट में उन्नत वास्तुशिल्प अवधारणाओं का अभ्यास करके अपने कोडिंग कौशल को 10 गुना करें, सर्वोत्तम प्रथाओं को सीखें और उत्पादन-ग्रेड परियोजनाओं का निर्माण करें।
हम खुले स्रोत हैं - https://github.com/thinkthroo/thinkthroo (हमें एक स्टार अवश्य दें!)
कोडबेस आर्किटेक्चर पर आधारित हमारे उन्नत पाठ्यक्रमों के साथ अपनी टीम को कुशल बनाएं। अधिक जानने के लिए [email protected] पर हमसे संपर्क करें!
https://github.com/facebook/react/blob/main/.git-blame-ignore-revs
https://gist.github.com/kateinoigakumun/b0bc920e587851bfffa98b9e279175f2
https://github.com/facebook/react/commit/c998bb1ed4b3285398c9c7797135d3f060243c6a
https://moxio.com/blog/ignoring-bulk-change-commits-with-git-blame/
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3