Praktek kontrol versi untuk Penulisan Ulang

29

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?

1v0
sumber
@gnat Terima kasih atas tautannya. Ini menarik, tetapi perbedaan utamanya adalah bagi kami itu produk yang sama, hanya didesain ulang sepenuhnya. Proyek lama pada dasarnya adalah prototipe (jelek).
1v0

Jawaban:

46

Anda hampir pasti menginginkan repositori baru.

Tujuan dari repositori adalah:

  • untuk melacak riwayat dan perubahan sehingga Anda dapat membandingkannya dengan mudah
  • untuk mengelola cabang dan penggabungan daripada hanya mengirim surel file sekitar dan menerapkannya ke direktori kerja secara manual

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).

pengguna52889
sumber
2
Bergantung pada lamanya masa transisi, penting untuk membuat yang sebelumnya hidup dan mudah diakses untuk perbandingan. Anda bahkan mungkin memperkenalkan kasus uji di sistem lama untuk membantu Anda memvalidasi hasil yang cocok dengan sistem baru.
Eric
16

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. :)

dsw88
sumber
5

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.

Keith
sumber