क्या जीआईटी कमिट मेसेज को संशोधित की गई फाइल का उल्लेख करना चाहिए?


50

एक git कमिट मैसेज की पहली पंक्ति में मुझे उस फ़ाइल का उल्लेख करने की आदत है जो संशोधित की जाती है यदि कोई बदलाव कई फ़ाइलों को नहीं करता है, उदाहरण के लिए:

Add [somefunc] to [somefile] 

क्या यह करना अच्छी बात है या यह अनावश्यक है?

जवाबों:


84

संस्करण नियंत्रण उपकरण काफी शक्तिशाली हैं कि व्यक्ति को यह देखने के लिए कि फाइलों को संशोधित किया गया था, और क्या तरीके जोड़े गए थे। इसका मतलब यह है कि सामान्य रूप से, लॉग संदेश जो पहले से मौजूद है को स्पष्ट रूप से डुप्लिकेट करते हैं जो लॉग को प्रदूषित कर रहे हैं।

आपने somefuncआवश्यकता पूरी करने के लिए विधि जोड़ी , अर्थात:

  • एक सुविधा जोड़ने के लिए,
  • बग को हटाने के लिए या
  • स्रोत कोड को रीफैक्टर करने के लिए।

इसका मतलब यह है कि आपके लॉग संदेशों को यह स्पष्ट करना चाहिए कि क्या सुविधाएँ / बग प्रभावित हुए थे या फिर क्या करना था।


5
यह भी के बारे में बात करनी चाहिए क्यों । आपने किन अन्य विकल्पों पर विचार किया और आपने इसे क्यों चुना?
जे बाजुज़ी

2
मैं उसी तरह से टिप्पणी करता हूं जैसे मैं उच्च स्तर के दृष्टिकोण (यानी, कम जानकारी, अधिक संक्षेप) से कोड को टिप्पणी करता हूं। व्यक्तिगत रूप से, मैं इसे एक फ़ाइल / मॉड्यूल स्तर (गिट में) के लिए तोड़ देता हूं, लेकिन केवल इसलिए कि कमिट सस्ते अप-फ्रंट हैं और मुझे पुस्तक की तरह इतिहास पढ़ने में सक्षम होना पसंद है। YMMV।
इवान प्लाइस

1
यदि किसी कारण से व्यक्ति एक ही बार में फाइलों का एक समूह बना लेता है जो उसी बग से संबंधित नहीं होते हैं तो मैं उन्हें गर्मियों के पहले फ़ाइल नाम और बग आईडी सूचीबद्ध करना पसंद करता हूं। मुझे file.cpp जानने की आवश्यकता नहीं है: getMethod () जोड़ा गया है, लेकिन मैं बग आईडी # 10 file.cpp पसंद करूंगा: यहां गर्मियों में सभ्य। यदि वे कई बग रिपोर्ट में फैली फाइलों का एक समूह बनाते हैं, तो हम एक बात करेंगे, क्योंकि मैं वास्तव में ऐसा नहीं करता हूं। मैं बहुत चाहता हूं कि वे कई कमिट करें। प्रत्येक समस्या के समाधान के लिए वे एक हैं।
विलियम

@William: इसके अलावा, यदि एक बग फिक्स के साथ कोई समस्या है, तो न्यूनतम उपद्रव के साथ इसे वापस करना संभव है। एक प्रतिबद्ध में दस बग फिक्स को मिलाएं, और यह एक गंभीर समस्या हो सकती है।
डेविड थॉर्नले

59

नहीं, कमिट की सामग्री की जांच करने के बहुत सारे तरीके हैं। टिप्पणी में कमेंट के उद्देश्य का वर्णन करना चाहिए ।


30

TICKET / ISSUE NUMBER जोड़ना न भूलें ।

यदि आपके पास कोई सुविधा है या # # टिकट जारी करने वाली ट्रैकिंग प्रणाली है , तो उस आईडी को कमिट में रखना सुनिश्चित करें। जो भी उस सुविधा या समस्या के बारे में अधिक जानना चाहता है जो आप काम कर रहे थे।

मेरी अंतिम परियोजना में, एक मैक्रो था जिसे यह सुनिश्चित करने के लिए विकसित किया गया था कि टिप्पणी के पहले 7 अंक स्पष्ट खोज (हमारा मुद्दा / सुविधा ट्रैकिंग सिस्टम) से एक वैध अंक संख्या थी।


आप फिर से बदलाव कैसे कर सकते हैं?
जूल्स

@ जूल्स रिफ्लेक्टरिंग में एक टिकट # है जो कभी खत्म नहीं होता है
Caleth

@ जूल्स एक कार्यप्रणाली यह है कि रिफैक्टरिंग को "कोर" प्रकार के मुद्दे के रूप में ट्रैक किया जाता है और इसलिए इसमें एक समस्या संख्या भी होती है।
स्कॉट मैकइंटायर

@ScottMcIntyre हालांकि यह सच हो सकता है, मुझे यकीन नहीं है कि यह एक अच्छा विचार है। Refactoring अक्सर अवसरवादी रूप से सबसे अच्छा प्रदर्शन किया जाता है, या कोड विकसित करने की प्रक्रिया के भाग के रूप में जो कि कोड पर निर्भर होता है। जैसा कि फाउलर कहते हैं , "नियोजित रिफ्लेक्टरिंग [...] एक संकेत है कि टीम ने अन्य वर्कफ़्लोज़ का उपयोग करके पर्याप्त रीफ़ैक्टरिंग नहीं किया है"। या रॉन Jeffries द्वारा अधिक स्पष्ट रूप से: Refactoring - बैकलॉग पर नहीं!
जूल्स

3

मैं उस प्रकार का काम करता हूं जब मैं कमिट करता हूं जैसे कि एक दोष के लिए फिक्स जो कई फाइलों में परिवर्तन की आवश्यकता होती है। इससे यह बताना थोड़ा आसान हो जाता है कि परिवर्तन में व्यक्तिगत फ़ाइलों को देखे बिना वास्तव में क्या बदल गया है।

एकल फ़ाइल परिवर्तन के लिए, यह अनावश्यक है।

पहली पंक्ति हमेशा परिवर्तन का एक उच्च-स्तरीय वर्णन है, जैसे कि दोष या उपयोगकर्ता कहानी का लिंक।


3

यदि यह प्रतिबद्ध संदेश की कथा में प्रासंगिक जानकारी है, तो हाँ, इसे शामिल करें। यदि जानकारी का एकमात्र बिट फ़ाइल नाम ही है, तो नहीं।

उदाहरण के लिए यह समझ में आता है: "build_foo () फ़ंक्शन को fooutil.c से foobase.c पर ले जाया गया, क्योंकि अधिकांश प्रोग्राम जो build_foo () का उपयोग करना चाहते हैं, वे पहले से ही foobase.c सहित हैं।"

यह एक नहीं है: "बार पैरामीटर लेने के लिए fooutil.c में build_foo () अपडेट किया गया।"


1

मैं यहां एक अलग परिप्रेक्ष्य जोड़ना चाहता हूं।

मेरा उत्तर हां या नहीं है, लेकिन आम तौर पर मैं हां कहूंगा।

संस्करण नियंत्रण वास्तव में काफी शक्तिशाली है यह जानने के लिए कि किस फ़ाइल को अपडेट किया जा रहा है। लेकिन, जब हम करते हैं

$ git log

हम केवल प्रतिबद्ध संदेश देखते हैं। कि ज्यादातर लोग क्या करते हैं।

लॉग में ही देख कर। यह इसमें अतिरिक्त संदर्भ जोड़ता है। उदाहरण के लिए:

readme.md: Fix typo detected by language tool

से बेहतर है

Fix typo detected by language tool

हालांकि, यदि परिवर्तन कई फ़ाइलों को स्पॉन करते हैं, तो कम से कम उस घटक का उल्लेख करें जिसे संपादित किया जा रहा है।

API: Fix reset password not sent email to user

इसे पढ़ने से, हम जानते हैं कि तय की जा रही त्रुटि एपीआई घटक पर है, और यह शायद कोड आधार पर एपीआई निर्देशिका के तहत है।

हम हालांकि कर सकते थे

$ git show COMMIT_ID --name-only 

लेकिन यह केवल फ़ाइलों को प्राप्त करने के लिए और अधिक कदम जोड़ता है।


0

केवल एक बार मैं देख सकता था कि यह एक एकल फ़ाइल चेकइन के लिए उपयोगी है, यदि आपने फ़ाइल के भीतर कई स्थानों पर उपयोग किए गए फ़ंक्शन में परिवर्तन किया है, जिसके परिणाम में अंतर क्लैट हो गया है। फिर भी मैं परिवर्तन ट्रैकर # और परिवर्तन का एक सादा पाठ विवरण पहले रखूँगा।


-1

मुझे लगता है कि यहां असली सवाल यह है कि आपके कमिटमेंट कितने सीमित हैं? यदि आप एक बार में एक साथ कई प्रकार के असंबंधित परिवर्तन करने की प्रतीक्षा करते हैं, तो आपको यह निर्दिष्ट करने की आवश्यकता महसूस हो सकती है कि किस उद्देश्य के लिए फाइलें बदली गई थीं।

हालाँकि, यदि आपने बस अधिक बार कम संकीर्ण किए हैं, तो एक एकल कमिट समझाएगा कि कौन सी फाइलें संशोधित की गई थीं और आप केवल यह बता सकते हैं कि संदेश में क्या उद्देश्य था।

अधिक कमिट्स, अधिक बार। यही कारण है कि आप अपने संदेशों में इस तरह की क्रिया से बच सकते हैं।


-2

यह नहीं करना चाहिए

हर कोई जो रुचि रखता है वह एक इतिहास में बदलाव देख सकता है

यह बड़ी प्रणालियों में भी संभव नहीं है क्योंकि कई फाइलें स्वतः उत्पन्न हो सकती हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.