Saya bekerja dengan tim programmer sebagai analis bisnis. Kami baru saja merilis versi 2.0 dari produk kami dan sedang mengerjakan versi berikutnya yang akan dirilis dalam 3 bulan (ini adalah produk perangkat lunak internal). Sayangnya versi 2.0 memiliki beberapa masalah yang harus diperbaiki dan kami akan menerapkan perbaikan tersebut dalam beberapa minggu. Masalahnya adalah bahwa kami juga tidak ingin menerapkan perubahan yang masih dikerjakan dan tidak dijadwalkan untuk dirilis selama 3 bulan lagi.
Programmer memutuskan bahwa cara untuk mengelola ini adalah bahwa hanya kode untuk cacat akan diperiksa, dan kode untuk peningkatan baru akan disimpan pada mesin lokal pengembang sampai selesai. Saya harus mendapatkan build lokal dari mesin mereka untuk menguji karena jika mereka memeriksa kode dan kita harus mendorong patch lain untuk memperbaiki cacat, kita belum ingin memasukkan perangkat tambahan itu dulu. Ada juga masalah di mana file kode yang sama berisi perbaikan cacat dan perangkat tambahan, sehingga mereka harus menyalin file kode secara lokal, kemudian membuat perubahan untuk memperbaiki bug dan memeriksa yang ada di dalamnya, kemudian melanjutkan bekerja pada perangkat tambahan dengan mengambil salinan lokal yang mereka buat.
Tampaknya berbelit-belit - apakah ada cara yang lebih baik untuk menangani skenario seperti ini? Kami menggunakan Team Foundation Server dan Visual Studio 2010.
Jawaban:
V2.0 seharusnya memiliki apa yang kami sebut sebagai 'steady-state branch' (kami menggunakan Perforce, bukan TFS) yang dibuat untuk itu setelah dirilis. Setiap perbaikan untuk v2 akan dilakukan ke cabang ini dan kemudian disebarkan kembali ke cabang pengembangan v3 sementara fitur v3 juga sedang dikerjakan, yaitu cacat pada v2 akan menghasilkan cacat juga pada v3.
Memiliki perubahan pada mesin pengembang untuk waktu yang lama kemungkinan akan menghasilkan mimpi buruk integrasi.
sumber
Yah ada beberapa cara untuk menangani masalah seperti itu, umumnya ditutupi oleh tag 'bercabang' , masing-masing dengan serangkaian manfaat dan kelemahannya sendiri.
Tetapi pendekatan yang dipilih oleh pengembang Anda ... wah saya akan mengutipnya secara lisan untuk memastikan bahwa saya tidak salah membaca ...
... cara seperti di atas mungkin satu-satunya yang benar-benar salah!
Apa yang membuatnya berbatasan dengan kriminal bagi saya adalah bahwa untuk TFS, ada Panduan Cabang Server Microsoft Team Foundation yang luar biasa, mudah dipahami - dokumen besar dan terperinci dengan rekomendasi strategi percabangan yang dirancang dan dijelaskan dengan cermat untuk semua jenis proyek yang berbeda ( versi HTML di sini ).
sumber
sunting
Anda tidak bertindak sebagai repositori tim de-facto. Ini untuk mengelola pekerjaan Anda sendiri, upaya refactoring, dll. Dan menyerahkan diri Anda saat tim terus MEMUBAH basis kode.
akhiri edit
sumber
Apa yang Anda gambarkan adalah cara yang mengerikan untuk menggunakan kontrol versi. Seharusnya ada cabang yang dibuat untuk rilis 2.0, atau tag atau pengenal. Dengan begitu, modifikasi pada rilis itu dapat ditampung dan pengembangan lebih lanjut dapat terus terjadi.
Artikel ini dapat memberi Anda beberapa ide. Itu ditulis dengan
git
pikiran, tetapi tidak ada alasan bahwa itu tidak dapat bekerja denganmercurial
baik. Saya menyadari bahwa Anda tidak menggunakan keduanya, tetapi itu juga masalah yang harus Anda pertimbangkan untuk memperbaikinya.sumber
Jawaban Cepat: Tim pengembang harus memiliki cabang Produksi terpisah untuk menjaga kode-basis V2.0 yang digunakan terpisah dari trunk Utama .
Semua perbaikan bug perlu dilakukan di cabang itu terlebih dahulu kemudian diuji dan disebarkan ke cabang lain, agar kode tetap sinkron .
Proyek Anda juga harus memiliki beberapa lingkungan
for health development
seperti Prod, Staging, QA, dan Dev (terkadang UAT). Lingkungan ini harus diatur sebelum pergi ke rilis Produksi.Secara keseluruhan, siap untuk bug dan modifikasi adalah cara untuk mendukung aplikasi yang dirilis.
Karena TFS disebut sebagai kontrol versi, saya juga telah menyusun daftar artikel yang akan membantu untuk mengatur lingkungan pengembangan kesehatan:
sumber
Tidak, karena saat Anda menggunakan VCS, Anda tidak melakukan kontrol versi.
Konsep sentral untuk kontrol versi melacak perbedaan dari waktu ke waktu, Anda berencana untuk merekam beberapa perbedaan, tetapi saat ini sebagian besar perubahan Anda tidak direkam.
Seperti yang orang lain katakan, Anda harus menggunakan cabang. Setelah Anda memiliki pengaturan itu, Anda harus memeriksa semua perubahan fungsional (yaitu tidak setiap penekanan tombol, tetapi setiap kali Anda memperbaiki bug, menambahkan fitur, menghapus fitur, atau menyelesaikan perubahan sedemikian rupa sehingga masih dibuat dan berfungsi).
sumber
Saya seorang pengembang dan kami diberi kode cabang dan db yang berbeda untuk perbaikan versi saat ini dan yang berbeda untuk peningkatan dan untuk versi selanjutnya berturut-turut.
Setelah perbaikan kami selesai mereka digabungkan dengan produksi dan dikerahkan kami mendapatkan cabang baru yang baru untuk bekerja kembali ke perangkat tambahan.
Selain itu kami mengikuti praktik seperti jika saya memiliki 10 perbaikan untuk versi saya saat ini
Saya menulis sebagai
Demikian pula untuk perbaikan lainnya, saya hanya melakukan ini untuk setiap baris yang saya ubah atau tambahkan untuk perbaikan. Dan bandingkan dan komit saja. Demikian pula jika mereka melakukan paralel pada cabang yang sama yang bisa mereka gunakan
Ctrl+Shift+F
perintah dan ketik//Start Iteration 2, Fix No-1, Branch No-"ABC"
untuk mencari di seluruh solusi banyak membantu untuk mengetahui lokasi yang tepat, file di mana kode diubah dan mengambil kode baru hanya bagian yang dapat digunakan untuk melakukan.sumber