Saya dapat menyarankan solusi lain (alternatif untuk git-submodules ) untuk masalah Anda - gil (git links) alat
Hal ini memungkinkan untuk menggambarkan dan mengelola dependensi repositori git yang kompleks.
Juga memberikan solusi untuk masalah ketergantungan submodules git rekursif .
Pertimbangkan Anda memiliki dependensi proyek berikut:
grafik dependensi repositori sampel git
Kemudian Anda dapat mendefinisikan .gitlinks
file dengan deskripsi relasi repositori:
# Projects
CppBenchmark CppBenchmark https://github.com/chronoxor/CppBenchmark.git master
CppCommon CppCommon https://github.com/chronoxor/CppCommon.git master
CppLogging CppLogging https://github.com/chronoxor/CppLogging.git master
# Modules
Catch2 modules/Catch2 https://github.com/catchorg/Catch2.git master
cpp-optparse modules/cpp-optparse https://github.com/weisslj/cpp-optparse.git master
fmt modules/fmt https://github.com/fmtlib/fmt.git master
HdrHistogram modules/HdrHistogram https://github.com/HdrHistogram/HdrHistogram_c.git master
zlib modules/zlib https://github.com/madler/zlib.git master
# Scripts
build scripts/build https://github.com/chronoxor/CppBuildScripts.git master
cmake scripts/cmake https://github.com/chronoxor/CppCMakeScripts.git master
Setiap baris menggambarkan tautan git dalam format berikut:
- Nama unik repositori
- Jalur relatif repositori (dimulai dari jalur file .gitlinks)
- Repositori git yang akan digunakan dalam perintah git clone Cabang repositori untuk checkout
- Baris kosong atau baris yang dimulai dengan # tidak diuraikan (diperlakukan sebagai komentar).
Akhirnya Anda harus memperbarui repositori sampel root Anda:
# Clone and link all git links dependencies from .gitlinks file
gil clone
gil link
# The same result with a single command
gil update
Sebagai hasilnya, Anda akan mengkloning semua proyek yang diperlukan dan menghubungkannya satu sama lain dengan cara yang benar.
Jika Anda ingin mengkomit semua perubahan dalam beberapa repositori dengan semua perubahan dalam repositori terkait anak Anda dapat melakukannya dengan satu perintah:
gil commit -a -m "Some big update"
Perintah tarik, tekan bekerja dengan cara yang sama:
gil pull
gil push
Alat Gil (git links) mendukung perintah berikut:
usage: gil command arguments
Supported commands:
help - show this help
context - command will show the current git link context of the current directory
clone - clone all repositories that are missed in the current context
link - link all repositories that are missed in the current context
update - clone and link in a single operation
pull - pull all repositories in the current directory
push - push all repositories in the current directory
commit - commit all repositories in the current directory
Lebih lanjut tentang masalah ketergantungan submodul git rekursif .