कुछ लोग "interdiff" कोड रिव्यू क्यों पसंद करते हैं
Gerrit कोड रिव्यू टूल का आकलन
- Gerrit एक open source कोड रिव्यू टूल है, जो Git repository के साथ काम करता है
- repository में patch लिखकर उसे review के लिए submit किया जा सकता है
- दूसरे लोग लिखे गए कोड की समीक्षा करते हैं और उन समस्याओं की ओर इशारा करते हैं जिन्हें ठीक करना चाहिए
- कोड रिव्यू आम तौर पर एक अच्छा विचार है
- open source projects में कोड merge हो सकता है, जिससे जिम्मेदारी और technical debt बढ़ती है
अलग-अलग कोड रिव्यू टूल
- Gerrit, GitHub, Phabricator, bug tracker में
.patch file upload करना, git send-email के ज़रिए email भेजना आदि जैसे कई टूल मौजूद हैं
- हर टूल अलग-अलग स्तर तक काम कर सकता है
आदर्श patch series
- 3 patch series codebase के विकास को चरण-दर-चरण दिखाती है
- बदलाव तार्किक रूप से अलग होने चाहिए, और हर patch ऐसा पढ़ा जा सके मानो वह अलग से लागू किया गया हो
- कोड रिव्यू के ज़रिए ऐसी आदर्श series की समीक्षा की जाती है
GitHub का कोड रिव्यू तरीका: "diff soup"
- GitHub मूल commit के ऊपर नए commits जोड़कर review करने को प्रोत्साहित करता है
- यह UX design और कई अन्य कारणों से हुआ है
- review प्रक्रिया में जब कई commits जुड़ते जाते हैं, तो commits के बीच के implicit संबंध जटिल हो जाते हैं
git blame और git bisect टूल्स का उपयोग कठिन हो जाता है
बेहतर तरीका: "interdiff" रिव्यू (AKA git range-diff)
- नए commits जोड़ने के बजाय, मूल commits के नए versions प्रकाशित किए जाते हैं
git range-diff का उपयोग करके commit versions के बीच का अंतर तुलना किया जाता है
- reviewer को पूरा diff दोबारा पढ़ने की ज़रूरत नहीं होती, और वह incremental review कर सकता है
git blame और git bisect टूल्स अधिक भरोसेमंद तरीके से काम करते हैं
बीच में एक स्पष्टीकरण: patch merge strategy
- ऊपर का तरीका merge strategy से स्वतंत्र है (जैसे
git rebase बनाम multi-parent git merge commit)
बीच में एक स्पष्टीकरण: क्या git rebase बुरा है?
git rebase ठीक है। बस इसे उन public branches पर इस्तेमाल नहीं करना चाहिए, जिन पर दूसरे लोग अपने commits आधारित करेंगे
अन्य नोट्स
निष्कर्ष
- interdiff review system ऐसे patches को बढ़ावा देता है जो छोटे हों और जल्दी main branch में merge हो जाएँ
- यह reviewer और author, दोनों के लिए बेहतर कोड रिव्यू अनुभव देता है
GN⁺ का सारांश
- यह लेख कोड रिव्यू टूल्स और methodology का गहन विश्लेषण देता है
- interdiff review तरीका कोड रिव्यू की दक्षता को काफी बेहतर बना सकता है
- यह GitHub की "diff soup" समस्या को हल करने में मदद करता है
- कोड रिव्यू टूल चुनते समय विचार करने योग्य महत्वपूर्ण पहलुओं को सामने रखता है
- समान सुविधाओं वाले टूल्स में GitHub, Gerrit, Phabricator आदि शामिल हैं
1 टिप्पणियां
Hacker News राय
GitHub में आम तौर पर इस्तेमाल होने वाला workflow काफी मेहनत वाला है और सहयोगियों के लिए स्पष्ट नहीं है
git blameऔरgit bisectनहीं टूटतेgit commit --fixup <업데이트할 커밋의 해시>का उपयोग किया जाता हैgit rebase --interactive origin/main --autosquashका उपयोग करके fixup commit को मूल commit के साथ जोड़ दिया जाता हैgit push --force-with-leaseका उपयोग करके merge किया जाता हैGitHub का code review तरीका अक्षम है, इसलिए Phabricator का उपयोग करके इसे मैन्युअली संभाला गया
GitHub के code review तरीके से बेहतर system चाहिए
code review के लिए नया approach देखना हमेशा दिलचस्प होता है
Review Board ने सबसे पहले interdiffs पेश किए थे, और यह code review में बहुत उपयोगी है
Gerrit code review system का उपयोग करने का अनुभव है, और GitHub का code review अक्षम है
कई तरह के code review systems इस्तेमाल किए हैं, और हर system के अपने फायदे और नुकसान हैं
Gerrit code review system इस्तेमाल करने के बाद, GitHub के stack PR असुविधाजनक लगते हैं