3 पॉइंट द्वारा GN⁺ 2024-02-02 | 1 टिप्पणियां | WhatsApp पर शेयर करें

मेरा सबसे पसंदीदा Git commit

  • यह Git commit messages के महत्व पर ज़ोर देता है और मानता है कि वे codebase को दस्तावेज़ित करने के सबसे शक्तिशाली tools में से एक हैं.
  • यह बताने के लिए कि क्यों, इसमें developer Dan Carley द्वारा लिखे गए "Convert template to US-ASCII to fix error" commit का उदाहरण दिया गया है.
  • GDS (Government Digital Service) के अनुभव के आधार पर, सार्वजनिक रूप से coding करने का एक लाभ यह है कि ऐसे उदाहरण संगठन के बाहर भी साझा किए जा सकते हैं.

यह commit अच्छा क्यों है

  • Commit message और code changes का अनुपात दिलचस्प है, लेकिन यही वजह नहीं है कि इसे साझा करना मूल्यवान है.
  • किसी दूसरे संगठन या developer के लिए यह commit message शायद सिर्फ change whitespace या fix bug तक सीमित रह जाता.
  • लेकिन Dan ने अपने आसपास के लोगों के लिए सचमुच उपयोगी commit message बनाने में समय लगाया.

यह बदलाव का कारण समझाता है

  • सबसे अच्छे commit messages केवल यह नहीं बताते कि क्या बदला गया, बल्कि यह भी बताते हैं कि क्यों बदला गया.
  • इस commit में विस्तार से बताया गया है कि /etc/nginx/router_routes.conf की contents को match करने के लिए जो test जोड़ा गया था, वह bundle exec rake से चलाने पर ArgumentError: invalid byte sequence in US-ASCII error के साथ क्यों fail हुआ.
  • ऐसी जानकारी दस्तावेज़ित करने के लिए बहुत मूल्यवान होती है, और जब लोग मूल संदर्भ भूल जाते हैं या दूसरी team में चले जाते हैं या संगठन छोड़ देते हैं, तब यह आसानी से खो सकती है.

इसे खोजा जा सकता है

  • Commit message के पहले हिस्से में वह error message शामिल है जिसने इस बदलाव को प्रेरित किया, इसलिए कोई भी codebase में git log --grep "invalid byte sequence" चला सकता है या GitHub की commit search का उपयोग करके इस error को खोज सकता है.
  • वास्तव में, कई लोग इस समस्या को खोज पाए और यह जान सके कि पहले किसने इसे पाया था और उससे कैसे निपटा गया था.

यह एक कहानी बताता है

  • Commit message में इस बात का विस्तृत विवरण है कि समस्या कैसी दिखती थी, जांच की प्रक्रिया कैसी थी, और समाधान तक कैसे पहुँचा गया.
  • Commit messages किसी खास file, function, या code line को दस्तावेज़ित करने के लिए नहीं, बल्कि codebase की यात्रा के बारे में अतिरिक्त जानकारी दर्ज करने के लिए बहुत उपयुक्त होते हैं.

यह सभी को थोड़ा और समझदार बनाता है

  • Dan ने हर चरण में चलाए गए commands को दस्तावेज़ित किया, जो team के भीतर ज्ञान साझा करने का एक हल्का लेकिन असरदार तरीका हो सकता है.
  • इस commit message को पढ़कर कोई Unix toolset के बारे में कुछ उपयोगी tips सीख सकता है.
  • इस बदलाव की review करने वाला व्यक्ति हो या बाद में इस commit को ढूँढने वाला, दोनों इससे कुछ न कुछ सीख सकते हैं.

यह सहानुभूति और भरोसा बनाता है

  • आख़िरी paragraph एक मानवीय संदर्भ जोड़ता है.
  • इसे पढ़कर महसूस किया जा सकता है कि Dan ने एक पेचीदा bug को track करने में एक घंटा लगाने पर कैसी झुंझलाहट महसूस की होगी, और उसे हल करने पर कैसी संतुष्टि मिली होगी.
  • ऐसे commit messages यह याद रखने में मदद करते हैं कि हर बदलाव के पीछे एक इंसान है जिसने अपनी समझ के अनुसार सबसे अच्छा निर्णय लिया.

अच्छे commit की अहमियत

  • यह उदाहरण एक चरम मामला है, और यह अपेक्षा नहीं की जाती कि हर commit में इतना विवरण हो.
  • फिर भी, यह बदलाव के पीछे का संदर्भ समझाने, दूसरों को सीखने में मदद करने, और codebase के बारे में team के सामूहिक mental model में योगदान देने का शानदार उदाहरण है.
  • यदि आप अच्छे commit messages के फ़ायदों और उन्हें अधिक आसानी से structure करने में मदद करने वाले tools के बारे में और जानना चाहते हैं, तो Joel Chippindale का "Telling stories through your commits" और Tekin Süleyman का "A branch in time" सुझाए गए हैं.

GN⁺ की राय

  • यह लेख Git commit messages के महत्व पर ज़ोर देता है और दिखाता है कि commit messages codebase के इतिहास को दस्तावेज़ित करने और ज्ञान साझा करने का कितना शक्तिशाली माध्यम हो सकते हैं.
  • Dan Carley का commit message बदलाव के कारण, searchability, कहानी कहने, ज्ञान साझा करने, और सहानुभूति व भरोसा बनाने जैसे कई पहलुओं में एक आदर्श उदाहरण प्रस्तुत करता है.
  • अच्छे commit messages लिखने के महत्व को समझकर और उसे व्यवहार में लाकर, developers बेहतर collaboration और code maintenance का अनुभव कर सकते हैं, जो पूरी team की productivity और efficiency को बेहतर बनाने में योगदान दे सकता है.

1 टिप्पणियां

 
GN⁺ 2024-02-02
Hacker News राय
  • GitHub के सह-संस्थापक की राय:

    • Git commit message कोड documentation का एक अनोखा तरीका हैं, लेकिन यह optimized नहीं है।
    • ज़्यादातर tools commit message की सिर्फ पहली पंक्ति दिखाते हैं।
    • Git ने commit message इस तरह डिज़ाइन किए थे कि प्रोजेक्ट में शामिल हर व्यक्ति उन्हें email body की तरह पढ़ सके, लेकिन व्यवहार में इन्हें लगभग कभी नहीं देखा जाता।
    • git blame का इस्तेमाल करके संबंधित commit message ढूँढना भी मुश्किल होता है।
    • Git प्रोजेक्ट के commit message बहुत विस्तृत होते हैं, लेकिन वास्तव में उनका शायद ही कभी उपयोग होता है।
    • Git के ज़रिए शानदार documentation लिखना ज़्यादातर communities में लगभग समय की बर्बादी है।
  • विशिष्ट समस्याओं के लिए commit message का महत्व:

    • समस्या को साफ़ तौर पर समझाने वाली commit message की पहली पंक्ति महत्वपूर्ण होती है।
    • ज़रूरत पड़ने पर बाकी हिस्सा पढ़कर अतिरिक्त जानकारी ली जा सकती है।
  • commit message के बारे में व्यक्तिगत भावना:

    • बेहतरीन commit message लिखने पर गर्व होता है, लेकिन यह यक़ीन नहीं है कि उनका दूसरों के लिए कोई मूल्य है।
    • ज़्यादातर लोग commit message लगभग कभी खोजते ही नहीं हैं।
    • सुंदर commit message प्रोग्रामर की vanity हो सकती हैं और उनका व्यावहारिक मूल्य न भी हो।
  • commit message की पहली पंक्ति लिखने की रणनीति:

    • git log इस्तेमाल करते समय पहली पंक्ति सबसे महत्वपूर्ण होती है।
    • पहली पंक्ति में यह नहीं, कि क्या किया, बल्कि यह लिखना चाहिए कि क्यों किया।
    • समाचार लेख की तरह, सबसे महत्वपूर्ण जानकारी से शुरू करके फिर विस्तार में जाना बेहतर है।
  • commit message को संशोधित करने की कठिनाई:

    • commit message लिखने के बाद उन्हें बदलना मुश्किल होता है।
    • .md फ़ाइल, wiki, Confluence जैसे documents को संशोधित करना आसान होता है।
    • component के design को समझाने का लालच commit message में नहीं करना चाहिए; ज़रूरत हो तो documentation बेहतर बनाना अधिक उचित है।
  • छोटे commit के लिए विस्तृत विवरण का महत्व:

    • commit जितना छोटा हो, उतना ही अपेक्षाकृत लंबा विवरण ज़रूरी हो सकता है।
    • छोटे बदलावों के पीछे के कारण को विस्तार से समझाना महत्वपूर्ण है।
  • commit message की सीमाएँ और tools की समस्याएँ:

    • commit message की पहली पंक्ति को और अधिक ठोस व विशिष्ट लिखने की ज़रूरत है।
    • बाकी लंबा विवरण शायद बहुत मूल्यवान न हो।
    • development tools की समस्याओं की ओर इशारा करते हुए कहा गया कि error message अधिक स्पष्ट होने चाहिए।
    • यह सवाल उठाया गया कि code editing tools non-standard whitespace characters को क्यों अनुमति देते हैं।
  • commit message से अधिक commit hygiene का महत्व:

    • commit message के विस्तार से अधिक, अच्छा commit hygiene ज़्यादा महत्वपूर्ण है।
    • साफ़-सुथरे और स्वतंत्र commit से code functionality को आसानी से निकाला और दोबारा इस्तेमाल किया जा सकता है।
  • auto-squash और rebase पर आलोचना:

    • auto-squash सार्थक commit message लिखने में बाधा बनता है।
    • rebase डेवलपर द्वारा सोच-समझकर history व्यवस्थित करने के लिए है, इसे merge के समय default pattern नहीं बनना चाहिए।