Kapan seharusnya cabang pengembangan dibuat?

11

Kami memindahkan tim proyek kami dari menggunakan cabang Utama / Batang tunggal, ke beberapa cabang Pengembangan / Pekerjaan yang harus digabung secara teratur ke dalam Utama. Kami mendasarkan proses baru kami pada artikel ini dan Panduan Pencabangan TFS (kami menggunakan TFS dan Visual Studio 2010).

Saat ini ada antara 1 dan 5 orang yang mengerjakan proyek pada satu waktu. Main harus stabil setiap saat karena kami ingin opsi untuk rilis kapan pun kami butuhkan. Kami tidak memiliki sprint tetap - setidaknya belum - dan saat ini dirilis setiap 1-2 minggu.

Tepat pada titik waktu ini setiap orang memperbaiki bug di seluruh aplikasi. Dalam beberapa minggu kami akan memulai pengembangan pada komponen besar baru untuk aplikasi.

Satu hal penting yang kami temukan adalah kapan cabang pengembangan harus dibuat . Kami akan mengimplementasikan beberapa cerita pengguna secara paralel tergantung pada keahlian pengembang. Kami telah memikirkan untuk membuat cabang untuk setiap pengembang tetapi itu tidak masuk akal karena akan selalu ada kebutuhan untuk kolaborasi pada suatu karya. Kami tidak dapat bertahan dengan satu cabang pengembangan karena kami ingin bergabung ke Utama sementara pekerjaan lain selesai.

Adakah yang punya petunjuk tentang ini?

Alex Angas
sumber
Tuhan memberkati jiwamu karena menggunakan TFS dan membuat cabang. Pada fase sebelumnya di perusahaan saya, mereka memutuskan untuk menggunakan TFS, dan akhirnya semua pengembang menjadi sangat takut dengan proses penggabungan sehingga percabangan berubah menjadi Programmer Fear Factor.
Jordan
@ Jordan: Ketakutan yang tidak sepenuhnya tidak berdasar.
Robert Harvey

Jawaban:

9

Saya tidak suka cabang sembarang yaitu perbaikan bug Fred atau perbaikan Harry. Saya jauh lebih nyaman dengan satu fitur (independen) satu cabang yang memungkinkan banyak pengembang untuk beroperasi pada satu fitur; tetapi untuk fitur yang akan digabung hanya ketika sudah selesai.

Jadi, saat ini Anda hanya memerlukan cabang "perbaikan bug" tetapi begitu Anda memulai pengembangan Anda harus membuat cabang untuk setiap fitur yang signifikan. Dengan begitu ketika mereka selesai mereka dapat digabungkan & dirilis tanpa tergantung pada fungsionalitas buggier lainnya.

Tidak yakin seberapa bagus TFS dalam penggabungan tetapi saya yakin Anda akan tahu dalam beberapa bulan :)

mcottle
sumber
Ini cukup dekat dengan bagaimana kita melakukannya di tempat saya bekerja. Jika Anda hanya memastikan untuk menggabungkan agama dari batang ke setiap cabang kerja setiap kali perubahan menjadikannya menjadi batang, itu bekerja dengan cukup baik. Juga, lihatlah untuk menyiapkan build otomatis pada saat yang sama. Mengetahui bahwa masing-masing cabang (seperti yang disimpan dalam kontrol sumber) selalu dalam kondisi membangun setidaknya membuat segalanya lebih mudah. Adapun penggabungan menggunakan alat Visual Studio, itu bekerja dengan baik sampai Anda memiliki garis yang sangat panjang dengan perubahan di kedua sisi penggabungan ...
a CVn
5

Kami tidak dapat bertahan dengan satu cabang pengembangan karena kami ingin bergabung ke Utama sementara pekerjaan lain selesai.

Sepertinya Anda sudah tahu bahwa beberapa cabang pengembangan harus dibuat. Dua skenario yang mungkin muncul:

  1. Masing-masing dari lima pengembang bekerja pada bagian independen dari proyek (bug-fixing) - Pastikan bahwa cabang individu yang dibuat untuk setiap pengembang. Ini menempatkan tanggung jawab dan tanggung jawab masing-masing pengembang untuk memastikan set perubahan mereka tidak bertentangan dengan pekerjaan orang lain. Kemungkinan besar salah satu dari lima pengembang Anda akan melakukan kesalahan. Jika / Ketika itu masalahnya, tidak masuk akal bagi semua orang untuk ditahan.
  2. Pengembangan banyak fitur - Terlepas dari jumlah pengembang yang mengerjakan fitur / bug tertentu, ini harus dipisahkan. Contoh dari manfaat ini adalah bahwa semua kode yang dikomit adalah bagian dari fitur yang sedang dikembangkan - tidak ada dugaan kedua yang terlibat.
JK
sumber
1

Cabang kerja tersirat dengan DVCS

Kami menggunakan Mercurial sehingga ada cabang kerja tersirat di kotak pengembang dev. Komit selalu dilakukan ke ruang kerja lokal. Ketika sebuah karya yang dapat dirilis selesai, ia didorong ke server repo utama tempat ia dibangun dan diuji secara otomatis.

Kami hampir tidak pernah membuat cabang eksplisit, tetapi sekali lagi sprint kami tidak pernah lebih dari 1 minggu dan kartu butuh waktu tidak lebih dari 1-2 hari untuk selesai.

Selain itu, Anda dapat mengurangi rasa sakit karena menggabungkan dalam pekerjaan dari bagian kode lain atau proyek lain sehingga orang tidak harus melakukan penggabungan yang sulit sepanjang waktu.

dietbuddha
sumber
0

Saya telah menggunakan cabang tunggal per cerita dan satu cabang per rilis (semua pengembang memeriksa cerita mereka untuk dev dan jika ada yang melanggar cabang dev itu rusak untuk semua). Saya akan sangat merekomendasikan satu cabang per cerita jika Anda tidak suka konflik. Cabang dev akan selalu tetap stabil untuk semua pengembang dan tidak akan ada waktu tunggu bagi pengembang yang mengerjakan sepotong kode yang sudah rusak oleh pengembang lain. Ketika cerita Anda selesai semua kode Anda ada di cabang Anda. Anda akan menggabungkannya ke dev tetapi tidak check-in dan menguji, jika Anda mendapat konflik, Anda akan menyelesaikannya dan bertanya kepada orang yang Anda lawan untuk menghindari menghapus kode-kodenya. Kemudian bergabunglah dengan dev. Ini membantu semua dev bekerja dengan lancar. Itu juga tergantung pada ukuran perusahaan. Perusahaan kami memiliki 200 devs yang bekerja secara bersamaan pada satu basis kode, tetapi pisahkan cabang untuk cerita mereka. Setelah kode digabungkan ke cabang dev, cabang cerita segera dihapus. Saya harap ini membantu. Terima kasih

Sahib Khan
sumber
0

Jika ini didasarkan pada git, maka Anda cukup membuat cabang untuk setiap perbaikan bug, memperbaiki bug dalam waktu sesingkat mungkin, menggabungkan cabang perbaikan bug dengan cabang pengembangan, lalu mendorong perubahan ke cabang pengembangan. Meninjau permintaan tarik dan penggabungan harus menjadi prioritas tertinggi , karena semakin cepat Anda menyelesaikannya, semakin baik peluang merger tidak menyebabkan masalah. Setelah digabungkan, cabang-cabang ini dapat dihapus.

gnasher729
sumber