Ini menjadi faktor menjengkelkan bekerja dengan tim besar: bagaimana Anda mengelola checkin dan mencegah konflik fitur dan mengelola ketergantungan dengan kontrol sumber dengan benar?
Saat ini di tempat kerja saya, kami menggunakan TFS 2008 dan kami bermigrasi ke TFS 2010 pada awal Desember. Pertama, kontrol sumber apa pun lebih baik daripada tidak sama sekali, tetapi pendekatan apa yang menurut orang berguna untuk mencegah beberapa checkin dan rollback di seluruh riwayat kendali sumber? Apakah batang yang mudah menguap adalah cara terbaik untuk pergi atau bercabang ketika Anda menerapkan fitur baru dan begitu Anda senang bergabung kembali ke bagasi?
Saya benar-benar ingin mendengar pengalaman orang lain dan mungkin beberapa praktik terbaik untuk mengelola kontrol sumber.
sumber
Jawaban:
TFS? Lari ke bukit! Keluar secepat yang Anda bisa. Ini melakukan banyak hal yang berbeda tetapi tidak satupun dari mereka sebagus alat berkembang biak terbaik yang tersedia.
Tapi serius:
Setelah Anda memiliki sistem kontrol versi yang layak (SVN, GIT, dll.) Saya akan merekomendasikan pengaturan aturan untuk manajemen cabang, misalnya kapan membuat cabang, untuk apa, kapan untuk menggabungkan, siapa, dan banyak lagi.
Sampai saat ini kami menggunakan satu cabang untuk pengembangan baru ('trunk'). Untuk rilis, kami akan membuat cabang dari trunk. Final QA akan dilakukan di cabang itu dan setelah selesai kami akan merilis (kami ada di rilis bulanan).
Kami telah beralih ke konsep 'tidak ada sampah di bagasi' untuk mengurangi risiko jadwal. Konsep ini pada dasarnya berisi aturan di mana Anda akan membuat cabang untuk pekerjaan pengembangan terpisah dari trunk. Misalnya Anda bisa memiliki cabang terpisah untuk fitur, untuk tim pengembangan kecil atau serupa. Kami menggunakan 'epos' untuk menggambarkan fitur kecil atau bagian yang dapat dirilis dari fitur dan membuat cabang untuk setiap epik. Setidaknya sekali sehari semua perubahan dari trunk digabung ke dalam cabang epik. Kuncinya adalah dukungan penggabungan yang baik dengan kontrol versi atau alat yang terpisah (misalnya penggabungan tiga arah). QA untuk epik akan dilakukan di cabang epik. Setelah melewati cabang epik akan digabungkan menjadi batang dan uji integrasi dijalankan. Kami masih memiliki cabang untuk rilis.
Dengan cabang-cabang epik kami telah secara substansial mengurangi risiko jadwal karena kami sekarang dalam posisi untuk keluar dari bagasi dan memasukkan semua epos yang berhasil digabungkan menjadi bagasi. Epos yang tidak lengkap ketinggalan bus dan akan membuat rilis berikutnya (bulan depan).
Ini tentu saja hanya dapat berfungsi di lingkungan kita. Sangat mungkin Anda akan memiliki faktor-faktor yang berbeda dari kami yang akan memengaruhi apa pilihan terbaik untuk manajemen cabang.
Misalnya jika Anda memiliki tim dengan banyak orang yang bekerja dari jarak jauh dan tidak selalu terhubung ke server kontrol versi, maka Anda ingin menggunakan sistem kontrol versi yang mendukung model terdistribusi. GIT dan beberapa lainnya akan termasuk dalam kategori ini. TFS sejauh pengetahuan saya memerlukan koneksi ke server untuk membuat file dapat ditulis (diperbaiki dalam versi 2010?).
Saya harap saya bisa menunjukkan bahwa tidak ada "satu ukuran cocok untuk semua". Mulailah dengan proses Anda dalam manajemen cabang tertentu, tentukan persyaratan dan akhirnya pilih alat yang paling cocok dengan kebutuhan Anda. Mungkin itu TFS, mungkin juga tidak.
sumber
Saya menganjurkan satu cabang per fitur karena memungkinkan fleksibilitas besar ketika memutuskan fitur mana yang akan dikirimkan & mana yang harus ditangguhkan.
Seberapa baik itu bekerja dalam situasi Anda tergantung pada seberapa baik VCS Anda menangani cabang dan lebih penting lagi penggabungan. DVCS seperti Git & Mercurial menjadikan ini latihan yang relatif sepele. SVN kurang begitu. Saya telah berhasil menghindari TFS meskipun saya telah membaca banyak tentang hal itu, sebagian besar tidak gratis, saya khawatir. Jika Anda terjebak dengan TFS, lakukan rilis pilot kecil berdasarkan satu fitur per cabang & lihat seberapa baik penggabungannya untuk Anda.
sumber
Pertama, penafian. Sulit untuk mengatakan apa cara terbaik untuk mengelola sumber Anda, karena kami tidak mengetahui bagaimana tim atau tim Anda bekerja setiap hari.
Secara umum, lebih baik bekerja di bagasi. Untuk setiap rilis utama, cabutlah - sehingga perbaikan bug untuk versi rilis ada di cabang yang dapat digabungkan kembali ke bagasi. Semua pengembang bekerja di trunk dan melakukan kode secara teratur (minimal sehari sekali).
Menggabungkan kode baru secara teratur meminimalkan rasa sakit saat menggabungkan potongan kode besar dalam fase integrasi besar-besaran. Dengan menyebarkan rasa sakit, Anda akan merasakannya lebih sedikit. Semakin sering anggota tim Anda melakukan kode, semakin sedikit mereka harus menggabungkan - karena mereka akan selalu berada di sumber terbaru.
sumber
Saya tidak pernah menggunakan TFS 2008/2010 tetapi dari apa yang saya baca di berbagai forum ada banyak hal negatif tentang penggunaan TFS untuk kontrol versi. Ini telah membuat saya tetap jelas dari TFS sejauh ini.
Saya saat ini menggunakan SVN dan Git, saya menemukan mereka baik untuk tim kecil atau tim lajang tetapi tidak secara pribadi merekomendasikan SVN untuk tim besar.
Saya sudah memperhatikan PlasticSCM dan akan mencobanya dalam waktu dekat.
Saya minta maaf karena tidak menjawab pertanyaan spesifik Anda, akan memposting komentar jika hak istimewa saya mengizinkan saya.
sumber
Saya pikir git membuat semua perangkat lunak kontrol sumber lain menjadi usang. Bercabang dan menggabungkan itu mudah, dan jika ada masalah, itu bisa diatasi, tetapi banyak masalah bisa dihindari dengan cara mendorong sangat sering melakukan, bercabang, dan bergabung. Setiap pengguna mendapatkan salinan lengkap dari repo (ini dapat dipangkas, tapi saya bekerja dengan basis kode yang sangat besar dan itu bukan masalah), jadi ada sesuatu yang merupakan cadangan otomatis. Komit / tekan / tarik cepat, dan salah satu hal paling penting adalah putusnya sambungan antara nama file dan pelacakan. Data file, termasuk nama dan jalur, adalah gumpalan data yang direferensikan oleh simpul pohon, yang independen dari jalur. Ini bukan hanya lebih aman, tetapi beberapa jenis masalah "jangan pernah lakukan itu" dalam sesuatu seperti SVN bukan masalah. Ini dapat digunakan sebagai konfigurasi hub tradisional atau peer to peer, dan penggunaan tersebut dapat dicampur secara bebas dalam pengaturan yang sama. Ini aman secara kriptografis terhadap insersi tanpa dokumen. Dan itu sangat cepat.
Saya menemukan saya menggunakannya di rumah sekarang sepanjang waktu, hanya untuk melacak dokumen dan menyinkronkannya di antara komputer, karena lebih mudah untuk melakukan dan mendorong ke server file daripada untuk kembali ke server atau menyimpannya di sana.
Kekurangannya adalah sedikit kurva pembelajaran yang curam, karena ia melanggar semua aturan yang biasa digunakan orang dengan kontrol sumber, dengan cara yang halus, tetapi kurva belajarnya curam yang pendek.
sumber
Beberapa praktik baik yang benar-benar kami ikuti dan banyak membantu kami:
1) Pastikan Anda tidak memiliki salinan file yang dapat ditulisi di lokal Anda dan Anda selalu memeriksa untuk mengedit. (Jika kadang-kadang Anda harus bekerja secara lokal, maka cobalah untuk menggabungkannya dalam kontrol sumber sebelum EOD.)
2) Beri label file Anda secara berkala, setelah tonggak kecil yang signifikan.
3) Berikan checkout atau komentar check-in yang bagus. Ini akan membantu ketika Anda meninjau, terkadang Anda tidak perlu membuka dan membandingkan antar versi.
sumber
Ini, dari POV saya, tugas dua faktor: Anda harus melakukannya dari teknis (percabangan yang baik & mudah & tahan peluru | merger | audit dll) dan manajemen (kebijakan mapan "apa" "ketika" "bagaimana"). Dua atau bahkan tiga tingkatan kode pemisahan dalam ALM: sesuatu seperti "stabil" (lulus pengujian unit), "tidak stabil" (setiap fitur yang disertakan selesai, tetapi aplikasi sebagai produk memiliki pertanyaan pasca integrasi / ya, itu bisa terjadi /) dan " sedang dalam proses ". Dengan cara ini Manajer Proyek yang tepat dapat mengurangi gangguan pada pekerjaan pengembang yang sama.
TFS (yang saya tidak gunakan, gunakan dan tidak akan gunakan) memiliki beberapa, AFAIK, masalah mendasar dalam aspek Manajemen Sumber Kontrol. Saya hanya tautkan di sini ke beberapa teks James McKay:
sumber
Artikel yang sangat bagus dan baru-baru ini yang secara jelas dan ringkas membandingkan dan membedakan beberapa cara berbeda untuk bekerja dengan kontrol sumber ada di sini: Kontrol Sumber Dilakukan dengan Benar .
Saya tidak berpikir ada satu strategi / praktik terbaik untuk menggunakan kontrol sumber. Tim matang yang telah bekerja bersama untuk waktu yang lama memiliki "rasa sakit" yang jauh lebih sedikit di daerah ini bahkan jika mereka tidak benar-benar mengikuti "praktik terbaik" populer.
Adapun alat yang ... Hampir tidak masalah. Yang penting adalah membuat semua orang di tim Anda berada di halaman yang sama sejauh penggunaan. Ini berarti semua orang perlu memahami bagaimana garis kode dikelola dan apa yang diharapkan dari mereka. Lagi pula, dalam praktiknya Anda TIDAK biasanya punya pilihan tentang alat mana yang akan digunakan. Manfaatkan yang terbaik dari apa pun yang Anda gunakan.
sumber