Kami memiliki beberapa modul tempat kami melakukan ini dan yang pada dasarnya kami lakukan adalah:
- Siapkan repo Git untuk modul.
- Sebarkan modul ini ke basis kode situs produksi dan lakukan semuanya termasuk:
- tautan lunak yang dibuat oleh modman
- direktori .modman yang menampung repositori modul kloning
- Gunakan modman untuk "menyebarkan" ke versi lain dan / atau lingkungan dev untuk dev dan pengujian.
Melakukannya dengan cara ini memberi Anda fleksibilitas yang Anda butuhkan untuk pengembangan modul, versi kode di situs tunggal juga, dan jika Anda membuat perubahan pada modul dalam basis kode situs-tunggal, Anda dapat mengkomit yang langsung kembali ke repositori modul sejak repo ada di direktori .modman.
UPDATE:
Ketika saya awalnya menulis ini, saya gagal untuk memperhitungkan dalam jawaban saya bahwa Git tidak mengizinkan (sub) modul untuk berkomitmen ke repositori, dalam hal ini "melakukan segala sesuatu" semacam membutuhkan beberapa elaborasi!
Kebetulan, ini karena saya sudah melakukan ini lebih sering menggunakan modman untuk menyebarkan modul yang ditempatkan di repo Git ke basis kode produksi yang disimpan oleh SVN ... dan Subversion tidak memiliki gangguan mencegahnya melakukan seluruh pohon Git ke VCS.
Jadi begini ...
Jika Anda menggunakan SVN untuk menyimpan kode lokasi produksi, Anda seharusnya tidak memiliki masalah karena Subversion (secara praktis) tidak memiliki konsep sub-modul. Itu tidak masalah.
Jika Anda menggunakan Git untuk kode situs produksi, Anda harus menggunakan sub-modul untuk "melakukan semuanya" ke repositori kode situs. Setelah menggunakan modman untuk mengkloning sesuatu seperti ini:
modman clone ssh://git@bitbucket.org/<user>/<repo>.git
Anda juga ingin menambahkannya sebagai sub-modul seperti:
git submodule add ssh://git@bitbucket.org/<user>/<repo>.git .modman/<repo>
Setelah Anda melakukan ini, Anda harus dapat menambahkan direktori .modman dan .gitmodules ke dalam indeks dan melakukan itu.
Setelah mengkloning repositori yang menggunakan modul-modul ini diinstal melalui modman, cukup init submodules dan perbarui:
git submodule init
git submodule update
PS Saya sekarang menggunakan Git penuh waktu di semua proyek baru, jadi semoga pengawasan ini tidak terjadi lagi. Maaf kawan ;)