मेरा सबसे पसंदीदा Git commit (2019)
(dhwthompson.com)मेरा सबसे पसंदीदा 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-ASCIIerror के साथ क्यों 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 टिप्पणियां
Hacker News राय
GitHub के सह-संस्थापक की राय:
git blameका इस्तेमाल करके संबंधित commit message ढूँढना भी मुश्किल होता है।विशिष्ट समस्याओं के लिए commit message का महत्व:
commit message के बारे में व्यक्तिगत भावना:
commit message की पहली पंक्ति लिखने की रणनीति:
git logइस्तेमाल करते समय पहली पंक्ति सबसे महत्वपूर्ण होती है।commit message को संशोधित करने की कठिनाई:
.mdफ़ाइल, wiki, Confluence जैसे documents को संशोधित करना आसान होता है।छोटे commit के लिए विस्तृत विवरण का महत्व:
commit message की सीमाएँ और tools की समस्याएँ:
commit message से अधिक commit hygiene का महत्व:
auto-squash और rebase पर आलोचना: