Kami mempunyai beberapa projek besar yang telah diuruskan oleh TFS sebelum ini, tetapi kini kami perlu memindahkannya ke git untuk digunakan.
Tetapi kami menghadapi beberapa masalah semasa proses pemindahan.
Sebagai contoh, dalam TFS, kami mempunyai projek teras, dan banyak projek lain akan merujuk projek teras ini. Dalam GIT, setiap projek adalah repo, jadi bagaimana repos merujuk satu sama lain?
Saya melukis gambarajah skematik:
Saya telah mencuba submodule dan subtree Mereka akan menyalin kod projek yang dirujuk di bawah repo projek utama, jadi akan terdapat banyak salinan kod. Adakah terdapat cara untuk GIT menjadi seperti TFS, tidak kira berapa banyak projek yang merujuk antara satu sama lain, hanya ada satu kod dan ia mudah diselenggara?
Struktur projek semasa kami lebih kurang seperti ini:
Jika anda menggunakan GIT, kod product_core akan disalin berkali-kali. Adakah terdapat penyelesaian yang secara automatik merujuk projek tanpa menyalin berbilang salinan kod?
Jika ia adalah projek java, disyorkan untuk menggunakan
Maven
ataugradle
untuk mengurus kebergantungan projek, dan kemudian gunakan git untuk mengurus kejuruteraan projek. Sudah tentu,Maven
dangradle
juga boleh mengurus projek bukan java.Selepas beberapa carian, soalan ini serupa dengan tajuk:
http://programmers.stackexchange.com/questions/114719/organizing-git-repositories-with-common-nested-sub-modules
Pemahaman saya ialah modul anda digandingkan bersama. Tetapi kadang-kadang ia tidak dapat dielakkan.
Komponen atau kod awam hendaklah ditukar sesedikit mungkin. Modularisasi, tidak disyorkan untuk mengurangkan beberapa projek menjadi satu projek
untuk mengurus. Banyak bahasa kini mempunyai komponen pihak ketiga mereka sendiri, dan pemalam ini juga menggunakan git
Pengurusan, keluarkan versi yang stabil dan kemas kini dalam projek apabila komponen dikemas kini pada masa hadapan.
Saya faham bahawa teras anda bersamaan dengan projek asas Mengapa hubungan rujukan ini harus dikekalkan pada tahap kod sumber? Kod sumber projek harus agak bebas Apakah tujuan digabungkan bersama seperti ini?
Bukankah maven sudah biasa melakukan kerja ini? Mengapakah ia mesti dipetik pada peringkat kod sumber?
Pisahkannya kepada aplikasi bebas struktur pembangunan berbilang cawangan anda akan hancur tidak lama lagi