Apa cara yang tepat untuk memeriksa data komit di Git?

13

Tujuan saya adalah memeriksa data komit yang tidak memenuhi persyaratan tertentu dan kemudian menolak komit yang dibuat atau didorong ke repositori jarak jauh.

Masalah melakukan hook pre-commit adalah sulit untuk digunakan ke banyak orang yang harus secara manual memperbarui file hook pre-commit mereka. Selain itu, Git tidak memungkinkan Anda untuk memiliki submodul di folder .git yang sudah sangat mudah untuk digunakan.

Opsi lain yang saya lihat adalah melakukan pengecekan di Saya percaya pembaruan kait di sisi remote, yang akan memeriksa setiap komit didorong oleh dev dan menolak dorongan jika salah satu komit gagal tes.

Apakah ada yang punya wawasan tentang masalah ini? Dan jika demikian, dapatkah Anda memberikan atau mengarahkan saya ke contoh skrip pembaruan kait? Saya agak bingung bagaimana cara kerjanya.

dalanmiller
sumber
4
Ini pertanyaan pertama yang bagus.
Daenyth

Jawaban:

7

Anda harus terlebih dahulu mencari tahu apakah Anda tidak ingin kode yang tidak memenuhi syarat untuk dilakukan atau didorong / dipublikasikan kembali ke hulu.

menurut pendapat saya nanti yang lebih layak.

dengan DVCS seperti git. Anda tidak benar-benar ingin mengontrol bagaimana setiap pengembang menggunakan repositori lokalnya. dan Anda tidak dapat benar-benar memiliki kendali atas hal itu.

kait pra-komitmen berfungsi dengan baik sebagai validasi dasar dan sanitasi, jika semua orang yang terlibat menerimanya secara sukarela. kami benar-benar menegakkannya secara longgar di perusahaan kami. Namun, selalu bisa dilewati git commit --no-verify.

sisi server hook, di sisi lain, tidak mengintervensi alur kerja lokal programmer, dan memastikan bahwa orang lain dalam proyek mendasarkan pekerjaan mereka hanya pada kode yang memenuhi kriteria tertentu. biasanya inilah yang dicari orang ketika mereka menerapkan pemeriksaan otomatis.

validasi otomatis ini tidak dimaksudkan untuk menggantikan kontrol kualitas, saya kira, yang biasanya dicapai dengan tinjauan kode atau pemrograman pasangan.

jika Anda terbiasa dengan github , Anda akan melihat bahwa "permintaan tarik" adalah pendekatan lain untuk masalah ini. banyak proyek sumber terbuka dan perusahaan menggunakan permintaan tarik github untuk kontrol izin cabang dan ulasan kode. tetapi membutuhkan interaksi manusia, jadi mungkin bukan itu yang Anda minta.

Huang Tao
sumber
1

Seperti yang sudah Anda tunjukkan, melakukan ini pada klien, sementara secara teknis memungkinkan, mungkin tidak praktis. Juga, banyak pengguna git melakukan pekerjaan sementara, jadi melakukan pemeriksaan kejam pada setiap komit adalah kontraproduktif.

Solusi standar adalah pengait sisi server. Anda mungkin akan memasang pre-receivekait, yang bekerja setiap kali ada dorongan, dan yang bisa menolaknya jika mau. Sisanya tergantung pada cek yang tepat yang ingin Anda lakukan.

Ini dijelaskan dalam Pro Git , bab 7.3 Menyesuaikan Git - Git Hooks .

sleske
sumber
Terima kasih atas jawaban Anda, dan saya sangat menyukai situs web Git yang baru. Satu-satunya masalah saya adalah sulit untuk memulai menulis kait komit Anda sendiri terutama karena Anda tidak tahu persis di mana Anda berada dalam proses dan apa yang harus Anda periksa. Jika saya mencoba menulis kait pra-terima, apakah saya berasumsi bahwa remote memiliki cabang pelacakan dari apa yang saya dorong? Bagaimana aku tahu? Saya berharap ada semacam fitur git yang akan memungkinkan Anda untuk mensimulasikan apa yang Anda miliki saat ini.
dalanmiller