Mengelola banyak versi aplikasi web menggunakan Git

12

Kami memiliki serangkaian aplikasi, semuanya memiliki basis yang sama. Sampai sekarang saya telah mengembangkan basis ini, dan alur kerja Git sangat sederhana:

  • Pengembangan dilakukan di developcabang
  • Fitur-fitur baru dikembangkan di name-of-the-featurecabang
  • Rilis dibuat di release-**cabang

Hingga saat ini, kodenya sama untuk setiap aplikasi keluarga. Katakanlah pangkalan yang mereka bagikan sekarang lengkap, dan mulai sekarang kode akan berbeda untuk setiap aplikasi.

Saya tidak yakin bagaimana saya harus berurusan dengan git dan beberapa aplikasi ini yang memiliki basis yang sama.

  • Haruskah masing-masing dari mereka memiliki proyek git sendiri ?
  • Haruskah mereka berada di proyek yang sama, tetapi masing- masing di cabang sendiri ?

Intinya adalah: jika saya meletakkannya di proyek yang terpisah, setiap modifikasi yang dilakukan di dasar aplikasi harus saya ulangi di setiap aplikasi. Saya tidak terlalu mengenal git , tetapi jika saya menyimpan setiap proyek di cabang , apakah mungkin untuk menggabungkan modifikasi basis dengan setiap aplikasi?

Adakah yang pernah mengalami situasi seperti ini? Saya tidak yakin bagaimana melanjutkan.

Terima kasih!

Diedit ketika saya mengatakan versi saya tidak suka nomor versi. Mereka sebenarnya adalah aplikasi yang berbeda yang memiliki basis yang sama.

João Daniel
sumber

Jawaban:

7

Biarkan aplikasi dasar di repositori sendiri, dan buat proyek baru yang bergantung pada toples yang Anda kompilasi dari repositori itu.

Cabang Git bukan untuk banyak aplikasi. Git lebih suka Anda menggunakan satu repositori untuk setiap proyek atau keluarga proyek terkait. Cabang ada sehingga Anda dapat mengembangkan fitur secara terpisah, tidak sehingga Anda dapat membuat proyek yang sama sekali baru tanpa meninggalkan repositori.

Anda tidak ingin memiliki banyak aplikasi yang membagikan kode - itu adalah mimpi buruk pemeliharaan. Jika seperti yang Anda sarankan Anda mengembangkan masing-masing sebagai cabang di repo pusat Anda, Anda akan memiliki banyak penggabungan yang terjadi untuk menyebarkan perubahan ke setiap aplikasi. Jauh lebih mudah untuk bergantung pada pustaka tunggal yang terpisah dan menggunakan sesuatu seperti Apache Maven untuk menarik dependensi proyek.

Michael K.
sumber
Sebagian besar kode yang dibagikan adalah kode GWT (tampilan, layanan, dll). Apakah mungkin untuk mengekstraknya ke perpustakaan jar? Atau hanya mungkin untuk kode java sisi server?
João Daniel
Elemen tampilan dapat diekstraksi, tetapi mungkin tidak ke stoples. Misalnya, javascript dapat diekstraksi dari setiap halaman menjadi satu file yang kemudian dapat dimasukkan dalam setiap proyek. Kode umum JSP harus diekstraksi menjadi tag JSP. Anda mungkin tidak perlu menarik seluruh halaman, tetapi saya tidak tahu proyek Anda, jadi saya bisa salah.
Michael K
apa pendapat Anda tentang pendekatan ini: stackoverflow.com/a/2540471/2615737 ? ini masuk akal ...
Francisco Corrales Morales
Saya tidak berpikir itu kasus penggunaan yang sama. Jawaban itu berkaitan dengan dua versi aplikasi yang sama yang sedikit berbeda, sementara pertanyaan ini adalah tentang apa yang saya lihat sebagai aplikasi yang sepenuhnya berbeda. Saya masih lebih suka untuk tidak memiliki cabang sama sekali bahkan dalam kasus "sedikit berbeda"; namun, sulit untuk memfaktorkan fungsionalitas untuk memisahkan pustaka di Android jika ada tampilan xml yang terlibat. Sepertinya penjawab itu tidak berpikir itu sepadan dengan masalahnya untuk situasinya.
Michael K
6

Jika aplikasi tidak akan memodifikasi basis itu sendiri, pertimbangkan untuk meninggalkan basis di repositori sendiri. Kemudian buat repositori baru untuk masing-masing aplikasi individual dan tambahkan basis sebagai submodule git .

jhenninger
sumber