Saya seorang kontraktor yang baru-baru ini memulai dengan sebuah perusahaan.
Tim adalah 3 pengembang yang terdiri dari 2 pengembang tingkat menengah hingga menengah, dengan pengembang lainnya di tingkat yang sama segera dimulai, dan saya sendiri (6 Tahun xp). Untuk kedua pengembang yang sudah ada, ini adalah pekerjaan pertama mereka di luar universitas / perguruan tinggi, dan mereka belum pernah memiliki pengembang senior yang mengawasi pekerjaan mereka sebelumnya.
Tidak ada kebijakan kontrol Versi eksplisit. Pengembang melakukan semua pengembangan pada bagasi dan kemudian menyebar ke produksi langsung dari mesin pengembangan mereka. Tim yang ada tidak terbiasa dengan percabangan.
Saya mengubah semua ini dan memperkenalkan CI, TDD test / staging / server produksi dll, bersama dengan kebijakan kontrol versi untuk melengkapi ini.
Sistem kontrol sumber adalah TFS, yang belum pernah saya gunakan sebelumnya. Ini dikonfigurasi sebagai satu repositori raksasa.
Saya telah menuliskan beberapa petunjuk untuk mereka, tetapi apakah ada hal lain yang harus saya tambahkan / ubah, dengan mengingat pengalaman tim?
Kebijakan Kontrol Versi
Pengembangan dilakukan di bagasi
Jika perubahan diperkirakan memakan waktu lebih dari satu minggu maka itu harus dilakukan pada cabang, dengan penggabungan reguler dari batang ke cabang untuk menghentikan keduanya tidak sinkron.
Cabang rilis dibuat untuk kode produksi. Cabang itu seharusnya hanya berisi kode stabil. Kami dapat memiliki satu cabang rilis yang diperbarui dari bagasi sekali per sprint, atau kami dapat membuat cabang rilis terpisah untuk setiap minggu.
Jika perbaikan bug mendesak yang mempengaruhi kode produksi perlu dilakukan, maka akan dilakukan pada cabang rilis, dan bergabung kembali ke bagasi.
Jika kita mengadopsi strategi satu cabang rilis maka trunk akan digabung ke cabang rilis sekali per sprint menjelang akhir sprint.
Jika kami mengadopsi strategi terpisah cabang per rilis, maka trunk TIDAK PERNAH digabungkan ke dalam cabang Release
Dalam beberapa skenario mungkin perlu melakukan perbaikan bug dua kali pada cabang yang berbeda, jika cabang terlalu banyak menyimpang. Jika kita melakukan sprint pendek maka ini seharusnya tidak terlalu sering terjadi.
Saya berencana memiliki tiga server. Uji lingkungan yang selalu menjalankan kode terbaru dalam repo. Lingkungan pementasan yang menjalankan kandidat rilis terbaru untuk pementasan / pengujian kode Kandidat dan tujuan UAT, dan lingkungan produksi.
Alasan mengapa saya berencana untuk melakukan ini adalah sejauh ini klien hanya melakukan perangkat lunak internal. Proyek terbaru untuk klien media profil tinggi, dan perasaan saya adalah bahwa tim perlu mengadopsi model pengembangan yang lebih profesional daripada apa yang mereka lakukan saat ini.
Misalnya saat ini, pengguna dapat menelepon tim dengan laporan bug. Para pengembang menemukan dan memperbaiki bug, melakukan uji cepat uji bola mata pada mesin mereka sendiri dan kemudian menyebar langsung ke produksi. Tidak ada pengujian otomatis atau apa pun.
Kalau dipikir-pikir saya pikir fitur cabang adalah langkah terlalu jauh dan saya akan menghapusnya.
Jadi intinya adalah a) tidak bercabang sama sekali) b) cabang rilis dan trunk, dan c) cabang rilis per rilis dan trunk.
Saya condong ke arah yang terakhir. Pikiran awal saya adalah bahwa saya akan memiliki kandidat rilis dan rilis untuk ditayangkan di server yang terpisah (UAT / Produksi) pada saat yang sama, tetapi secara efektif trunk adalah kandidat rilis pada setiap titik waktu, jadi satu cabang per rilis condong ke arah gila. Satu-satunya pemikiran saya adalah jika kita tidak ingin para pemangku kepentingan kita melihat kode pengembangan maka kita mungkin memerlukan cabang kandidat rilis terpisah, tetapi YAGNI dan semua itu .....