Kami mengembangkan produk (prototipe) P_OLD dalam bahasa X dan kami sekarang menulis ulang dari awal sebagai P_NEW dalam bahasa Y.
Karena P_NEW dan P_OLD adalah produk yang sama:
Haruskah P_NEW menjadi brach P_OLD yang lama atau haruskah itu menjadi repositori sendiri?
Apa cara yang biasa untuk menangani perubahan besar seperti membentuk perspektif kontrol versi?
Jawaban:
Anda hampir pasti menginginkan repositori baru.
Tujuan dari repositori adalah:
Jika Anda benar-benar menulis ulang suatu proyek dari awal maka tidak ada gunanya meletakkan penulisan ulang di repositori yang sama. Anda tidak akan dapat menerapkan tambalan yang ditulis dalam bahasa lama ke penulisan ulang Anda. Mengubah repo tidak akan membuat riwayat repo lama hilang, dan jika Anda beralih, Anda tidak akan memiliki tahapan sementara yang aneh di mana Anda memiliki dua bahasa yang menendang repo Anda.
Satu-satunya alasan saya bahkan mempertimbangkan untuk menyimpan repositori ketika mengubah bahasa adalah jika a) bahasa sangat mirip sehingga kode seringkali dapat disalin dari satu ke yang lain tanpa membuat perubahan apa pun, atau b) Anda memiliki proyek di mana mayoritas konten fungsional dalam kontrol versi adalah sesuatu seperti templat dalam bahasa templating yang Anda pertahankan, dan bahasa inti yang Anda ubah diterjemahkan baris-ke baris ke bahasa lain (dan itupun hanya jika Anda tahu Anda harus tetap mengulangi templat selama migrasi).
sumber
Saya sendiri selalu menulis ulang di repositori baru. Dengan begitu pembangunan, pengujian, dan penyebaran semua bisa dilakukan secara mandiri.
Saat Anda menulis ulang proyek dalam bahasa lain, seringkali ada sedikit kesamaan dalam tugas-tugas tersebut seperti membangun, menjalankan tes, dan menggunakan. Anda akan menyelamatkan diri dari rasa sakit jika Anda mengisolasi mereka di dalam repositori mereka sendiri. Maka Anda hanya perlu khawatir tentang rasa sakit bagaimana Anda akan mengelola pengguna dan transisi data dari sistem lama ke yang baru; itu selalu menyenangkan. :)
sumber
Jika sistem Anda cukup modular dan kompatibel dengan tautan, Anda akan mendapat manfaat dari satu repositori dan build. Misalnya, jika sistem C sedang ditulis ulang dalam C ++, kode C ++ dapat memanggil fungsionalitas yang ada dan secara bertahap menggantinya.
Namun, bahkan dalam kasus ini beberapa orang mungkin berpendapat untuk memulai repo baru di mana kode lama yang relevan ditarik sesuai kebutuhan.
sumber