Mengapa menggunakan permintaan tarik alih-alih penggabungan

16

Apa keuntungan menggunakan permintaan tarik daripada hanya menggabungkan cabang menjadi master tanpa satu? Terutama pada tim di mana semua pengembang memiliki akses penuh untuk menguasai.

Angsa
sumber
1
Tarik permintaan memungkinkan manajer proyek untuk memutuskan apakah mereka ingin cabang digabung menjadi master atau tidak.
Robert Harvey
Dalam praktiknya, jika semua pengembang memiliki akses untuk menguasai, apakah ada bedanya?
Angsa
2
Ulasan Kode Goose?
pengasuh
4
Kami tidak menggunakan Permintaan Tarik di toko kami. Pemahaman saya tentang Permintaan Tarik adalah bahwa mereka sebagian besar digunakan di Github, di mana Anda memiliki proyek open-source publik. Sebagai manajer proyek dari proyek semacam itu, alih-alih memberikan seluruh dunia kebebasan mengendalikan proyek Anda untuk membuat perubahan yang sewenang-wenang (dan berpotensi berbahaya), Anda malah meminta orang untuk mengirimkan perubahan mereka dalam bentuk permintaan tarik, sehingga Anda dapat meninjau perubahannya sebelum Anda menggabungkannya sendiri ke cabang master.
Robert Harvey
4
Karena ini adalah cara DVCS untuk tidak pernah melakukan dalam satu langkah sederhana apa yang dapat Anda lakukan dalam 3 atau 4 langkah rumit
Mason Wheeler

Jawaban:

23

Permintaan tarik menyediakan cek dan saldo, bahkan jika ada yang bisa mendorong untuk menguasainya.

Keuntungan terbesar adalah mereka memberikan kesempatan untuk meninjau kode. Orang yang bertanggung jawab untuk melakukan tarikan dapat melihat kode dan tes dan memastikan bahwa mereka memenuhi segala jenis pedoman yang dimiliki organisasi atau tim. Ada juga alasan lain untuk tinjauan kode - pendidikan, menemukan cacat atau peningkatan, melatih tim secara silang pada sistem, memberi penguji pandangan kotak putih tentang sistem.

Jika orang yang melakukan tarikan sudah terbiasa dengan arsitektur sistem, maka mereka dapat memastikan bahwa perubahannya sesuai dengan visi arsitektur sistem, terutama jika seluruh tim mungkin tidak memiliki visi jangka panjang.

Mengembangkan kebiasaan menggunakan permintaan tarik juga dapat membantu tim Anda jika Anda memutuskan di masa depan bahwa seluruh tim tidak akan memiliki akses untuk menguasai. Jika tim Anda tumbuh lebih besar, dan terutama jika Anda memiliki anggota tim yang baru dalam produk dan / atau baru di Git, tidak memberi mereka akses untuk menguasai dapat lebih aman bagi integritas produk.

Thomas Owens
sumber
5

Setelah melakukan pencabangan fitur dan fork + permintaan tarik, saya pikir bahwa permintaan tarik menawarkan sedikit keuntungan ketika Anda semua berkembang di tim atau perusahaan yang sama

Mereka memang menawarkan mekanisme dan antarmuka yang baik untuk meninjau kode, tetapi juga menyulitkan dan memperlambat seluruh proses 'menyelesaikan barang'. Terutama jika Anda memiliki banyak fitur kecil, masing-masing menunggu peninjauan, penggabungan dan kemudian semua yang lain digabungkan dengan master lagi untuk menarik perubahan dll. Jika Anda memiliki fitur besar, maka ini menjadi sulit untuk ditinjau, sehingga Anda terjebak dalam ikatan .

Setelah mengatakan bahwa Anda dapat melakukan tarik permintaan antar cabang pada repo yang sama. Anda tidak perlu membayar, atau memiliki izin yang berbeda.

Selain itu Anda harus mempertimbangkan seluruh metodologi dan alur kerja Anda. Apakah Anda juga memiliki sistem tiket, CI, tes penerimaan otomatis dll? Apakah ulasan kode Anda memberikan pemeriksaan tunggal yang vital sebelum kode ditayangkan, atau apakah itu hanya latihan stempel yang dibuat berlebihan oleh cek lain dalam alur kerja Anda?

Ewan
sumber
4

Ada sebuah pengamatan yang disebut Hukum Conway yang menyatakan:

organisasi yang merancang sistem ... dibatasi untuk menghasilkan desain yang merupakan salinan dari struktur komunikasi organisasi-organisasi ini.

Apa hubungannya ini dengan permintaan tarik? Permintaan tarik adalah saluran komunikasi utama di persimpangan kritis untuk kode Anda. Mereka memberikan kesempatan untuk ditinjau, pengujian otomatis, dan peningkatan sebelum kode beralih ke tahap pengujian dan produksi berikutnya, di mana perubahan itu jauh lebih sulit untuk mundur, dan membuang lebih banyak waktu lebih banyak orang.

Demikian juga, Hukum Conway menyarankan jika Anda ingin memiliki arsitektur layanan mikro dengan area tanggung jawab otonom yang terpisah dengan baik, dan antarmuka yang jelas, maka saluran komunikasi organisasi Anda harus mencerminkan arsitektur yang ingin Anda capai. Itu berarti tim kecil yang terdiri dari 5-10 orang harus memiliki akses komit langsung ke setiap layanan mikro yang diberikan, dan siapa pun di luar tim itu harus diminta untuk melakukan permintaan tarik. Ini memastikan orang-orang yang paling akrab dengan layanan mikro adalah orang-orang yang mengulas dan memberi nasihat tentang hal itu.

Ketika Anda memiliki organisasi besar dengan semua orang memiliki akses komit langsung ke mana-mana, saluran komunikasi Anda yang paling tidak resistan mengatur Anda untuk menghasilkan bola besar arsitektur lumpur.

Permintaan tarik hanya terasa seperti beban jika Anda tidak menukar apa pun sebagai balasannya. Saya telah bekerja di lingkungan di mana saya tidak dapat menyelesaikan apa pun selama seminggu karena bangunan selalu rusak, dan saya telah bekerja di lingkungan di mana seseorang mengajukan permintaan tarik dan saya bahkan tidak perlu memeriksanya karena mereka rusak CI membangun, dan saya katakan, mereka layak setiap detik usaha.

Karl Bielefeldt
sumber
1

Karl Bielefeldt benar sekali. Saya akan menambahkan: ini semua tentang kualitas.

Banyak (kebanyakan?) Toko tidak memiliki proses formal di tempat untuk mengatur pembangunan, yang menghasilkan: "Saya telah bekerja di lingkungan di mana saya tidak bisa menyelesaikan apa pun selama seminggu karena bangunan selalu rusak, dan saya telah bekerja dalam lingkungan di mana seseorang mengajukan permintaan tarikan dan saya bahkan tidak perlu memeriksanya karena mereka melanggar CI, dan saya katakan, mereka layak setiap detik upaya. "

Ini benar-benar sepadan dengan usaha.

pengguna255231
sumber
Terima kasih atas komentarmu. Saya tidak yakin mengapa menerapkan ini sebagai jawaban atas pertanyaan.
Angsa
Ini adalah satu-satunya jawaban yang menyebutkan pre-merge CI.
Basilevs
0

Kami menggunakan permintaan tarikan untuk peninjauan kode - tidak ada kode yang harus digabungkan ke cabang pengembangan utama (biasanya "berkembang" dalam kasus kami, tapi terkadang "master") tanpa melalui permintaan tarik. Kami tidak sulit menegakkan ini dengan kontrol repositori, tetapi itu karena kami tidak harus - pengembang kami cukup dewasa untuk tidak menyalahgunakan proses.

Philip Kendall
sumber