Apa strategi check-in kontrol sumber yang baik untuk tugas-tugas besar?


9

Aturan umumnya adalah menjaga check-in tetap kecil dan sering check-in. Namun terkadang tugas tersebut membutuhkan perubahan besar pada kerangka kerja yang mendasarinya. Kemudian memeriksa sebelum menyusun tugas akan merusak proyek sampai Anda memeriksa pekerjaan yang selesai.

Jadi strategi apa yang digunakan orang untuk mengurangi risiko kehilangan pekerjaan, atau memutuskan sesuatu yang Anda lakukan adalah pendekatan yang salah, kemudian mengubah pikiran Anda setelah menghapus kode dan mencoba pendekatan lain?

Ketika saya bisa, saya akan memeriksa setengah selesai pekerjaan dikomentari, atau jika itu mengkompilasi dan tidak ada yang menggunakan file baru saya akan memeriksanya. Semakin besar perubahan semakin besar kemungkinan saya untuk bercabang proyek dan kemudian bergabung kembali ketika saya memiliki semuanya berfungsi lagi. Pilihan lain jika sistem kontrol sumber memungkinkan adalah set rak, yang pada dasarnya adalah cabang-cabang kecil. Jadi, ketika saya selesai untuk hari itu atau sampai pada titik keputusan, saya akan menangguhkan perubahan saya, dan kemudian jika sesuatu bencana terjadi, atau saya ingin kembali ke titik itu, saya bisa.


Sistem kontrol sumber apa yang Anda kenal?

@ Talbjorn: Svn, Perforce, dan Server Team Foundation. Mereka semua mendapat kelebihan dan kekurangan mereka
Dominique McDonnell

Jawaban:


13

Saya menggunakan git, jadi jawaban saya adalah "cabang". Cabang, dan lakukan sepotong-sepotong saat Anda menyelesaikan berbagai bit.

Dorong komit Anda ke hulu karena Anda bahagia, sehingga kolega Anda dapat meninjau perubahan tanpa mengganggu trunk.

Ketika semua orang senang dengan kode tersebut, bergabunglah dan Anda selesai!

(Apa yang saya cenderung lakukan untuk cabang yang relatif lama adalah secara berkala menggabungkan batang (master, dalam terminologi git) ke cabang saya, sehingga dua cabang tidak menyimpang terlalu radikal.)


1
Anda tidak perlu memenuhi syarat dengan "Saya menggunakan git" - Saya menyarankan agar jawabannya adalah untuk berhenti secara penuh. Kuncinya adalah untuk memastikan bahwa cabang fitur tetap up to date dengan trunk, yang berarti sering menggabungkan perubahan dari trunk dan masuk akal.
Murph

Saya belum pernah menggunakan percabangan dengan subversi, tetapi saya diberitahu bahwa sangat mudah untuk bercabang di git. Saya bercabang setiap kali saya memiliki fitur yang tidak sepele. Rupanya, itu tidak praktis dengan subversi, maka kualifikasi saya. Saya senang mendengar saya sebenarnya tidak perlu lolos.
Frank Shearar

Jadi pada dasarnya strategi terbaik adalah untuk bercabang segera setelah ukuran tugasnya tidak sepele, dan menggabungkan batang ke cabang sebanyak yang diperlukan untuk membuatnya seperti checkout normal dari bagasi, dengan manfaat kontrol sumber dari tahap menengah.
Dominique McDonnell

1
@ Dominic Pada dasarnya, ya, tapi saya mengambil "ukuran tidak sepele" berarti "apa pun lebih dari satu baris yang dapat langsung dilihat oleh rekan kerja adalah benar atau salah".
Frank Shearar

3

Saya pikir jawabannya akan bervariasi berdasarkan pada apa jenis sistem kontrol versi yang Anda gunakan: terpusat (misalnya subversi) atau didistribusikan (misalnya git). Saya tidak memiliki pengalaman dunia nyata dengan menggunakan sistem kontrol sumber terdistribusi sehingga jawaban saya didasarkan pada apa yang kami lakukan dengan subversi.

Jika ada perubahan besar dalam progres yang akan memecah build trunk kami selama periode waktu tertentu, atau itu akan benar-benar mengganggu anggota tim lainnya dengan cara lain, maka kami akan membuat cabang. Saya akan mengatakan bahwa Anda harus melakukan sebanyak yang Anda bisa untuk menghindari keharusan melakukan itu - sebagian besar perubahan dapat duduk berdampingan dengan sisa kode dengan sedikit usaha. Misalnya, Anda bisa memicu jalur kode ke kode baru (dengan pernyataan sederhana jika atau Anda bisa menyuntikkan versi baru berdasarkan pengaturan konfigurasi jika Anda menggunakan kerangka kerja DI). Kemudian ketika Anda selesai Anda baru saja mengubah konfigurasi ke versi baru, uji semuanya, hapus kode yang tidak digunakan, uji lagi dan akhirnya hapus pengaturan konfigurasi. Anda tidak dapat selalu melakukan itu tetapi karena overhead mempertahankan cabang saya pikir Anda harus selalu memeriksa apakah itu mungkin.

Jika Anda bercabang, saya pikir kesalahan yang sering saya lihat orang lain adalah tidak menjaga cabang mereka tetap terbarui. Anda harus terus-menerus menggabungkan perubahan dari trunk ke cabang Anda saat itu ada sehingga ketika Anda selesai menggabungkan kembali semuanya kembali cukup sepele.


2

Dalam tim keluar kami menggunakan subversi, dan kami biasanya melakukan perubahan kecil langsung ke bagasi. Untuk tugas yang lebih besar, pengembang yang mengerjakannya biasanya membuat cabang pribadi, yang digabung ke dalam bagasi setelah selesai. Kemudian cabang pribadi dihapus. Tentu saja, sementara cabang pribadi ada, pemiliknya harus sering memeriksanya.

Kami mencoba untuk menghindari cabang-cabang yang berumur panjang dan gabungan batang-ke-cabang, karena itu membutuhkan pembukuan yang cermat. Sebaliknya, kami memiliki cabang yang relatif pendek yang hanya digabung kembali ke bagasi sekali, dan segera dihapus setelahnya.

Dan kami memiliki aturan bahwa tidak ada yang dapat dilakukan atau digabungkan ke bagasi sampai setidaknya satu orang lain melihat melalui perubahan dan menyetujuinya.


0

Sama seperti komentar biasa dari orang-orang SQL server "itu tergantung"

Jika Anda bisa, saya sarankan Anda membuat cabang pada kode sehingga Anda dapat terus menerapkan checkin kecil dari pekerjaan Anda. Setelah selesai, lakukan penggabungan kembali ke bagasi utama.

Ya ada kemungkinan duplikasi reowrk upaya melakukan ini. tetapi setidaknya Anda akan mempertahankan jejak pekerjaan yang Anda bisa kembalikan itu terbukti jalan buntu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.