Mengapa sebagian orang menyukai code review "interdiff"
Evaluasi alat code review Gerrit
- Gerrit adalah alat code review open source yang bekerja bersama repositori Git
- Anda dapat menulis patch di repositori dan mengirimkannya untuk ditinjau
- Anda dapat meninjau kode yang ditulis orang lain dan menunjukkan masalah yang perlu diperbaiki
- Code review pada umumnya merupakan ide yang baik
- Dalam proyek open source, kode dapat di-merge, dan hal ini meningkatkan tanggung jawab serta utang teknis
Berbagai alat code review
- Ada berbagai alat seperti Gerrit, GitHub, Phabricator, mengunggah file
.patch ke bug tracker, atau mengirim email melalui git send-email
- Masing-masing alat tersebut dapat bekerja dengan tingkat kemampuan yang berbeda-beda
Seri patch yang ideal
- Seri yang terdiri dari 3 patch menunjukkan evolusi codebase secara bertahap
- Perubahan harus dipisahkan secara logis, dan setiap patch harus bisa dibaca seolah-olah diterapkan secara terpisah
- Melalui code review, seri ideal seperti ini dapat ditinjau
Cara code review GitHub: "diff soup"
- GitHub pada dasarnya mendorong review dengan menambahkan commit baru di atas commit yang sudah ada
- Hal ini terjadi karena desain UX dan berbagai alasan lainnya
- Jika beberapa commit ditambahkan selama proses review, hubungan implisit antar-commit menjadi rumit
- Penggunaan alat
git blame dan git bisect menjadi lebih sulit
Cara yang lebih baik: review "interdiff" (AKA git range-diff)
- Alih-alih menambahkan commit baru, versi baru dari commit asli dipublikasikan
git range-diff digunakan untuk membandingkan perbedaan antar-versi commit
- Reviewer dapat melakukan review inkremental tanpa harus membaca ulang seluruh diff
- Alat
git blame dan git bisect bekerja dengan lebih andal
Penjelasan tambahan: strategi merge patch
- Metode di atas tidak bergantung pada strategi merge (misalnya
git rebase vs commit git merge dengan multi-parent)
Penjelasan tambahan: apakah git rebase itu jahat
git rebase tidak masalah. Hanya saja, sebaiknya jangan digunakan pada branch publik yang commit-nya akan dijadikan dasar oleh orang lain
Catatan lain
Kesimpulan
- Sistem review interdiff mendorong patch yang lebih kecil dan lebih cepat di-merge ke branch utama
- Sistem ini memberikan pengalaman code review yang lebih baik bagi reviewer maupun penulis
Ringkasan GN⁺
- Artikel ini memberikan analisis mendalam tentang alat dan metodologi code review
- Metode review interdiff dapat sangat meningkatkan efisiensi code review
- Ini membantu menyelesaikan masalah "diff soup" di GitHub
- Artikel ini menyajikan faktor-faktor penting yang perlu dipertimbangkan saat memilih alat code review
- Alat dengan fungsi serupa antara lain GitHub, Gerrit, dan Phabricator
1 komentar
Komentar Hacker News
Alur kerja yang umum digunakan di GitHub sebagian besar menambah beban kerja dan kurang jelas bagi kolaborator
git blamedangit bisectgit commit --fixup <hash commit yang akan diperbarui>git rebase --interactive origin/main --autosquashuntuk menggabungkan commit fixup ke commit aslinyagit push --force-with-leaseCara GitHub menangani code review tidak efisien, jadi sebelumnya hal itu ditangani secara manual dengan Phabricator
Menginginkan sistem yang lebih baik daripada cara GitHub menangani code review
Selalu menarik melihat pendekatan baru untuk code review
Interdiffs pertama kali diperkenalkan di Review Board, dan ini sangat berguna dalam code review
Pernah menggunakan sistem code review Gerrit, dan code review GitHub tidak efisien
Pernah menggunakan berbagai sistem code review, dan masing-masing punya kelebihan serta kekurangan
Setelah menggunakan sistem code review Gerrit, stacked PR di GitHub terasa merepotkan