ทำไมบางคนถึงชอบการรีวิวโค้ดแบบ "interdiff"
การประเมินเครื่องมือรีวิวโค้ด Gerrit
- Gerrit เป็นเครื่องมือรีวิวโค้ดโอเพนซอร์สที่ทำงานร่วมกับคลังเก็บ Git
- สามารถเขียนแพตช์ในคลังเก็บและส่งเพื่อขอรีวิวได้
- ผู้อื่นสามารถตรวจทานโค้ดที่เขียนไว้และชี้ปัญหาที่ต้องแก้ไขได้
- โดยทั่วไปแล้ว การรีวิวโค้ดเป็นแนวคิดที่ดี
- ในโครงการโอเพนซอร์ส โค้ดสามารถถูก merge ได้ ซึ่งเพิ่มทั้งภาระความรับผิดชอบและหนี้ทางเทคนิค
เครื่องมือรีวิวโค้ดหลากหลายแบบ
- มีเครื่องมือหลายแบบ เช่น Gerrit, GitHub, Phabricator, การอัปโหลดไฟล์
.patch ไปยังตัวติดตามบั๊ก, และการส่งอีเมลผ่าน git send-email
- เครื่องมือแต่ละชนิดใช้งานได้ในระดับที่แตกต่างกัน
ชุดแพตช์ในอุดมคติ
- ชุดแพตช์ 3 ตัวแสดงวิวัฒนาการของโค้ดเบสเป็นลำดับขั้น
- การเปลี่ยนแปลงควรถูกแยกอย่างมีตรรกะ และแต่ละแพตช์ควรอ่านได้ราวกับถูกนำไปใช้แยกกัน
- การรีวิวโค้ดใช้เพื่อตรวจทานชุดแพตช์ในอุดมคติเหล่านี้
วิธีรีวิวโค้ดของ GitHub: "diff soup"
- เดิมที GitHub สนับสนุนให้รีวิวโดยเพิ่มคอมมิตใหม่ทับบนคอมมิตเดิม
- เรื่องนี้เกิดจากการออกแบบ UX และเหตุผลอื่น ๆ หลายประการ
- เมื่อมีการเพิ่มหลายคอมมิตระหว่างกระบวนการรีวิว ความสัมพันธ์โดยนัยระหว่างคอมมิตจะซับซ้อนขึ้น
- ทำให้ใช้งานเครื่องมือ
git blame และ git bisect ได้ยากขึ้น
วิธีที่ดีกว่า: การรีวิวแบบ "interdiff" (หรือ git range-diff)
- แทนที่จะเพิ่มคอมมิตใหม่ จะเผยแพร่คอมมิตเดิมในเวอร์ชันใหม่
- ใช้
git range-diff เพื่อเปรียบเทียบความต่างระหว่างเวอร์ชันของคอมมิต
- ผู้รีวิวสามารถรีวิวแบบเพิ่มทีละส่วนได้ โดยไม่ต้องกลับไปอ่าน diff ทั้งหมดใหม่
- เครื่องมือ
git blame และ git bisect ทำงานได้เชื่อถือได้มากขึ้น
คำอธิบายแทรก: กลยุทธ์การ merge แพตช์
- วิธีข้างต้นเป็นอิสระจากกลยุทธ์การ merge (เช่น
git rebase เทียบกับคอมมิต git merge แบบหลายพาเรนต์)
คำอธิบายแทรก: git rebase เป็นสิ่งเลวร้ายหรือไม่
git rebase ใช้ได้ ไม่มีปัญหา เพียงแต่ไม่ควรใช้บน public branch ที่คนอื่นจะนำคอมมิตไปต่อยอด
บันทึกอื่น ๆ
บทสรุป
- ระบบรีวิวแบบ interdiff ส่งเสริมให้เกิดแพตช์ที่เล็กกว่าและถูก merge เข้าสู่เมนแบรนช์ได้เร็วขึ้น
- มอบประสบการณ์รีวิวโค้ดที่ดีกว่าให้ทั้งผู้รีวิวและผู้เขียน
สรุปโดย GN⁺
- บทความนี้นำเสนอการวิเคราะห์เชิงลึกเกี่ยวกับเครื่องมือและวิธีวิทยาการรีวิวโค้ด
- วิธีรีวิวแบบ interdiff สามารถเพิ่มประสิทธิภาพของการรีวิวโค้ดได้อย่างมาก
- ช่วยแก้ปัญหา "diff soup" ของ GitHub ได้
- นำเสนอปัจจัยสำคัญที่ควรพิจารณาเมื่อเลือกเครื่องมือรีวิวโค้ด
- เครื่องมือที่มีความสามารถคล้ายกัน ได้แก่ GitHub, Gerrit และ Phabricator
1 ความคิดเห็น
ความเห็นจาก Hacker News
เวิร์กโฟลว์ที่ใช้กันเป็นหลักบน GitHub มีงานจุกจิกมากและไม่ชัดเจนสำหรับผู้ร่วมงาน
git blameและgit bisectใช้งานเสียไปgit commit --fixup <แฮชของคอมมิตที่จะอัปเดต>git rebase --interactive origin/main --autosquashเพื่อรวมคอมมิต fixup เข้ากับคอมมิตต้นฉบับgit push --force-with-leaseเพื่อรวมเข้าไปวิธีทำโค้ดรีวิวของ GitHub ไม่มีประสิทธิภาพ และเคยใช้ Phabricator จัดการแบบแมนนวล
ต้องการระบบที่ดีกว่าวิธีทำโค้ดรีวิวของ GitHub
การได้เห็นแนวทางใหม่ ๆ สำหรับโค้ดรีวิวเป็นเรื่องน่าสนใจเสมอ
Review Board เป็นผู้แนะนำ interdiffs เป็นครั้งแรก และสิ่งนี้มีประโยชน์มากในการโค้ดรีวิว
มีประสบการณ์ใช้ระบบโค้ดรีวิว Gerrit และมองว่าวิธีโค้ดรีวิวของ GitHub ไม่มีประสิทธิภาพ
เคยใช้ระบบโค้ดรีวิวมาหลายแบบ และแต่ละระบบก็มีข้อดีข้อเสียต่างกัน
หลังจากใช้ระบบโค้ดรีวิว Gerrit แล้ว ก็รู้สึกว่า stack PR ของ GitHub ใช้งานลำบาก