문제에 대한 또 다른 해결책 ( git-submodules 대신)을 제안 할 수 있습니다 - 길 (git links) 도구
복잡한 자식 리포지토리 종속성을 설명하고 관리 할 수 있습니다.
또한 git 재귀 하위 모듈 종속성 문제에 대한 솔루션을 제공합니다 .
다음과 같은 프로젝트 종속성이 있다고 가정하십시오.
샘플 git 저장소 종속성 그래프
그런 다음 .gitlinks
리포지토리 관계 설명으로 파일을 정의 할 수 있습니다 .
# 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
각 줄은 git link를 다음 형식으로 설명합니다.
- 저장소의 고유 이름
- 저장소의 상대 경로 (.gitlinks 파일 경로에서 시작)
- git clone 명령에서 사용할 Git 리포지토리 체크 아웃을위한 리포지토리 분기
- 빈 줄이나 #으로 시작된 줄은 구문 분석되지 않습니다 (주석으로 처리).
마지막으로 루트 샘플 저장소를 업데이트해야합니다.
# Clone and link all git links dependencies from .gitlinks file
gil clone
gil link
# The same result with a single command
gil update
결과적으로 필요한 모든 프로젝트를 복제하고 적절한 방식으로 서로 연결합니다.
하위 링크 리포지토리의 모든 변경 사항이있는 일부 리포지토리의 모든 변경 사항을 커밋하려면 단일 명령으로 수행 할 수 있습니다.
gil commit -a -m "Some big update"
풀, 푸시 명령은 비슷한 방식으로 작동합니다.
gil pull
gil push
Gil (git links) 도구는 다음 명령을 지원합니다.
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
자식 재귀 하위 모듈 종속성 문제 에 대한 자세한 내용 .