Posting ini tampaknya terkait, tetapi otak saya mulai meleleh, mencoba memikirkan hal ini melalui: P
Majikan saya baru saja mulai menggunakan kontrol sumber, terutama karena sebelum mereka mempekerjakan lebih banyak pengembang, "repositori" adalah hard drive dari dev, yang bekerja terutama dari rumah. Semua kode .NET yang ditulisnya diperiksa secara massal , dan ada banyak fungsi duplikat (baca: salin-tempel). Saat ini, sistem SCM kami adalah cadangan yang dimuliakan.
Saya ingin menarik beberapa kode duplikat ke perpustakaan bersama. Saya meninggalkan repo asli sendiri sehingga kami tidak merusak apa pun — kami dapat memindahkan dan / atau memperbaiki kode yang ada saat dan ketika diperlukan. Jadi saya sudah menyiapkan repo hanya untuk kode baru, termasuk perpustakaan.
Masalah saya berkisar pada versi perpustakaan tanpa membuat kami miring dalam proses yang berlebihan: setelah mengakui bahwa kami membutuhkan pendekatan yang lebih koheren, dengan lebih banyak devs semua menulis kode yang sangat mirip, manajemen dan dev lainnya terbuka untuk mengatur kembali hal-hal, tetapi mungkin tidak akan turun dengan baik jika solusi mulai mempengaruhi produktivitas.
Solusi ideal dalam pikiran obsesif saya adalah membangun perpustakaan secara terpisah, dengan setiap proyek bergantung dibangun terhadap versi yang dipilih secara sengaja dan kompatibel. Dengan begitu, kami tahu persis klien mana yang memiliki versi pustaka mana, dapat lebih dipercaya mereproduksi bug, mempertahankan cabang rilis independen untuk produk dan pustaka, dan tidak memecah proyek masing-masing saat mengubah kode bersama.
Ini membuat memperbarui perpustakaan rumit, terutama untuk dev yang bekerja dari rumah. Saya berharap perpustakaan berubah dengan cepat, setidaknya pada awalnya ketika kita (akhirnya) mengumpulkan bit-bit umum bersama. Sangat mungkin bahwa saya sepenuhnya memikirkan hal ini dan kami akan baik-baik saja hanya membangun segalanya terhadap komitmen perpustakaan terbaru, tapi saya ingin setidaknya bersiap - siap untuk hari kami memutuskan bahwa beberapa komponen harus versi independen dan didistribusikan. Fakta bahwa beberapa perpustakaan harus diinstal di GAC membuat versi sangat penting.
Jadi pertanyaan saya adalah: apa yang saya lewatkan? Saya merasa seperti saya terpaku pada satu solusi dan sekarang saya mencoba menemukan variasi di atasnya yang akan membuat perubahan lebih lancar. Strategi apa yang pernah Anda gunakan untuk menyelesaikan masalah seperti ini sebelumnya? Saya menyadari pertanyaan ini ada di mana-mana; Saya akan melakukan yang terbaik untuk membersihkan dan mengklarifikasi poin-poin ketidakpastian.
Dan sebanyak yang saya ingin gunakan Mercurial, kami telah menghabiskan uang untuk SCM (Vault) komersial terpusat dan beralih bukanlah pilihan. Selain itu, saya pikir masalahnya di sini lebih dalam dari pilihan alat kontrol versi.