Tôi có thể đề xuất một giải pháp khác (thay thế cho git-mô đun con ) cho vấn đề của bạn - công cụ gil (git links)
Nó cho phép mô tả và quản lý các phụ thuộc kho git phức tạp.
Ngoài ra, nó cung cấp một giải pháp cho vấn đề phụ thuộc đệ quy đệ quy git .
Xem xét bạn có các phụ thuộc dự án sau:
biểu đồ phụ thuộc kho lưu trữ git mẫu
Sau đó, bạn có thể xác định .gitlinks
tệp với mô tả quan hệ kho lưu trữ:
# 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
Mỗi dòng mô tả liên kết git theo định dạng sau:
- Tên duy nhất của kho lưu trữ
- Đường dẫn tương đối của kho lưu trữ (bắt đầu từ đường dẫn của tệp .gitlinks)
- Kho lưu trữ Git sẽ được sử dụng trong lệnh git clone Nhánh kho lưu trữ để kiểm tra
- Dòng trống hoặc dòng bắt đầu bằng # không được phân tích cú pháp (được coi là nhận xét).
Cuối cùng, bạn phải cập nhật kho lưu trữ mẫu gốc của mình:
# Clone and link all git links dependencies from .gitlinks file
gil clone
gil link
# The same result with a single command
gil update
Kết quả là bạn sẽ sao chép tất cả các dự án cần thiết và liên kết chúng với nhau theo một cách thích hợp.
Nếu bạn muốn cam kết tất cả các thay đổi trong một số kho lưu trữ với tất cả các thay đổi trong kho lưu trữ được liên kết con, bạn có thể thực hiện bằng một lệnh duy nhất:
gil commit -a -m "Some big update"
Các lệnh kéo, đẩy hoạt động theo cách tương tự:
gil pull
gil push
Công cụ Gil (git links) hỗ trợ các lệnh sau:
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
Thông tin thêm về vấn đề phụ thuộc đệ quy git đệ quy .