Proses yang disarankan untuk ulasan kode dengan lincah

18

Kami biasanya menggunakan Kolaborator Kode Perforce dan SmartBear di Big Corpdan sekarang kami juga akan menggunakan Mercurial untuk proyek-proyek tertentu.

Code Collaborator mendukung Mercurial (kami menggunakan versi 5) dan saya mencoba menentukan kapan waktu terbaik (selama komit / push ke server) proses adalah waktu terbaik / efisien untuk tinjauan kode

Terima kasih

cbrulak
sumber
Anda mungkin harus memisahkan dua pertanyaan. (a) ada di sini, tetapi (b) mungkin akan menjadi milik stackoverflow atau serverfault
blueberryfields
Terima kasih @blueberryfields. saya benar-benar memperbaiki masalah, masalahnya adalah dengan file bin / hg.cmd berada di jalur dan tidak ada exe.
cbrulak

Jawaban:

22

Kami benar-benar mengalami hal yang hampir sama persis di perusahaan saya baru-baru ini. Inilah yang kami lakukan:

  • Kami menyimpan salinan definitif pusat dari semua repositori kami di satu server. Ketika pengembang ingin "memeriksa" kode, mereka pergi ke server ini dan mengkloning dari repositori di sana. Demikian juga, ketika siklus pengembangan selesai, kode akan didorong ke repositori yang sesuai di sana juga.

  • Kami memisahkan repositori stabil dari repositori pembangunan . Kami meminta kode ditinjau sebelum didorong ke repositori yang stabil. (Ini penting karena kami juga mengharuskan repositori stabil kami berisi kode yang saat ini berjalan dalam produksi, hanya berbeda dengan promosi kode yang tertunda.)

Untuk menegakkan tinjauan kode, kami menulis sebuah pretxnchangegroupkait (didokumentasikan dalam Buku HG ). Kami memanfaatkan fakta bahwa ketika kait ini berjalan, ia dapat melihat repositori seolah-olah perubahan kode bersifat permanen, namun juga memberi kami kemampuan untuk mencegah dorongan. Pada dasarnya, prosesnya adalah sebagai berikut:

  1. Pengembang memulai dorongan ke repositori stabil (ya, ini benar-benar adalah langkah pertama)
  2. Hook berjalan dan mengambil daftar semua perubahan yang termasuk dalam transaksi (dengan menjalankan log HG). Kemudian pertanyaan database yang kami bangun untuk melihat apakah perubahan itu dimasukkan dalam tinjauan kode. (Tabel cocok dengan hash dari changeset dengan ID ulasan kode).
    • Jika ini adalah pertama kalinya perubahan-perubahan ini terlihat, maka kami membuat Peninjauan Kode baru (menggunakan baris perintah Code Collaborator), dan kemudian merekam perubahan-perubahan ini dalam database dengan ID tinjauan kode itu.
    • Jika kami telah melihat beberapa (tetapi tidak semua) dari set perubahan, kami menjalankan perintah (Code Collaborator) untuk melampirkan set perubahan baru ke ulasan yang ada dan mencatat perubahan baru ini dalam database.
    • Jika semua perubahan ditemukan dalam database (yaitu, mereka semua telah ditambahkan ke tinjauan kode), maka kami memverifikasi bahwa status ulasan kode telah Selesai. Namun, jika ada perubahan baru (atau peninjauan kode tidak selesai), kait keluar dengan kode status non-nol (menyebabkan Mercurial memutar kembali transaksi) dan menampilkan pesan ramah pada Kesalahan Standar yang menjelaskan kepada pengembang. bahwa tinjauan kode perlu diselesaikan.

Intinya, ini memberi pengembang proses yang cukup ramping (yang harus mereka lakukan adalah dorongan hg) dan mengotomatiskan sepenuhnya pembuatan tinjauan kode (dan mengunggah file tambahan yang diubah ke ulasan), sambil memastikan bahwa semua kode ditinjau .

Catatan: Ini adalah proses yang cukup sederhana (dan relatif baru bagi kami), jadi mungkin tidak bekerja untuk semua orang, dan mungkin ada beberapa bug desain yang belum kami temui. Namun sejauh ini, ini bekerja dengan cukup baik.

Ryan
sumber
Apakah Anda akan menjelaskan keputusan Anda untuk memeriksa lingkungan stabil Anda sebelum peninjauan kode? Bagi saya, stabil tampaknya keliru.
Jordan
1
Mungkin tidak jelas dari jawabannya, tetapi itu tidak benar-benar membuatnya menjadi repositori kecuali semua perubahan telah ditambahkan ke ulasan kode dan ulasan selesai. Jika kait keluar dengan kode keluar non-nol, Mercurial memutar kembali semua perubahan yang didorong. Dengan demikian, kait khusus itu menyediakan tempat yang sangat nyaman untuk tidak hanya mendapatkan perbedaan untuk ulasan, tetapi juga untuk menegakkan ulasan sebelum perubahan diizinkan ke dalam repositori.
Ryan
1
Wow. Bisakah saya bekerja untuk Anda?
Kaya
@Ryan - Bagaimana kami menerapkan hook pretxnchangegroup, tautan yang Anda berikan tidak memberikan penjelasan detail tentang bagaimana penerapannya, tidak memberikan jenis templat fungsi yang harus kami ikuti, ke mana harus meletakkan kait. Saya tidak punya pengalaman python. Tolong bisakah Anda mengarahkan saya ke sumber yang benar atau templat untuk pretxnchangegroup hook. Ta
Simple-Solution
2

Itu tergantung pada bagaimana Anda memiliki struktur repositori Anda dan apa yang ingin Anda capai. Kami lebih suka melakukan tinjauan "pra-komitmen", yang dalam dunia DVCS benar-benar berarti "pra-push". DVCS lebih baik di lingkungan ini (bila dibandingkan dengan SCM tradisional) karena mereka memiliki fungsi bawaan untuk menyimpan perubahan lokal Anda dan mendapatkan ruang kerja Anda kembali sehingga Anda dapat mengerjakan sesuatu yang lain.

Jika Anda ingin melakukan review pasca-push, alur kerja yang ideal sangat bergantung pada struktur repositori Anda. Sebagai contoh, mari kita asumsikan struktur repositori yang terlihat seperti yang dibahas dalam artikel ini pada layout repositori Git . Dalam hal ini, Anda mungkin ingin meninjau perubahan yang sedang digabungkan develop. Komitmen individu pada cabang fitur mungkin tidak masuk akal untuk ditinjau. Jelas semua hotfixesjuga harus ditinjau bersama dengan penggabungan master.

Jika Anda memiliki cabang integrasi tunggal tempat orang-orang memeriksa secara langsung, Anda ingin meninjau semua dorongan ke cabang itu. Itu mungkin sedikit kurang efisien, tetapi masih bisa berfungsi. Dalam lingkungan ini, Anda harus memastikan bahwa semua perubahan yang didorong ditinjau sebelum Anda memotong rilis. Itu bisa lebih sulit.

Adapun b) satu-satunya hal yang saya sarankan adalah mengirim email dukungan SmartBear ([email protected]) secara langsung. Kami akan (ya, saya bekerja untuk SmartBear) dengan senang hati membantu Anda mengatasi masalah jalur Anda, tetapi tidak ada informasi yang cukup dalam pertanyaan ini untuk memperbaiki masalah Anda. Proses normal adalah hanya menjalankan installer dan semuanya berfungsi. Tampaknya ada yang salah dalam proses itu.

Brandon DuRette
sumber