우리는 매우 큰 고대 CVS repo와 다음과 같은 예제 포맷을 가지고 있습니다. 나는 각 하위 디렉토리를 전체 역사를 가진 자체 자식 저장소로 가져 왔습니다. - 우리는 버전 태그와 각 라이브러리 및 프로그램 릴리스에 태그를'CVS era'repo를 하위 모듈과 함께 git repo로 변환하기
.
├── prog1
│ ├── liba
│ └── libb
├── prog2
│ ├── libb
│ └── libc
└── prog3
├── liba
└── libc
를 CVS 트리의 일부를 태깅 수 있기 때문에 :
.
├── liba
├── libb
├── libc
├── prog1
├── prog2
└── prog3
는 3 개 프로그램은 다음과 같은 방법으로 라이브러리를 사용하여 말할 수 있습니다. 예 : liba_4x23
, prog3_2x22
.
(예 : liba_3x19
libc_7x88
)
우리는 도서관 태그하지 않고 프로그램의 새로운 버전을 출시 할 경우 - 태그는 프로그램의 초기 버전을 유지 그것은 사용되었습니다. 때문에 길을 이제
는 자식 가져 오기 작품 - 버전 - 실제로 (안 그 생각에 대해 걱정에) 프로그램의 최신 버전에 끝은
힘내 하위 모듈이를위한 아주 좋은 솔루션이 될 것 같다 프로그램을 체크 아웃 할 수 있고 라이브러리의 모든 올바른 버전을 서브 모듈로 가져옵니다.
현재 모든 프로그램이 서로 다른 라이브러리 릴리스에 있기 때문에 특정 버전의 하위 모듈을 다시 설치해야합니다.
prog1
이libb_4x50
prog2
와 연결되어이 최신 버전은 다음prog2
의 예는 쉽게libb_4x70
이 libb_4x70
가정으로되어 연결되어 libb
태그 추가하는 방법에 따라서
git checkout prog2
cd prog2
git submodule add libb
.... done
버전 (밀기울 아님) ched) 4x50
~ prog1
? 당신은 우리가 또한 수행 할 수 있습니다하면 다시 프로그램의 3 버전을 가서 각 버전에 적절한 서브 모듈을 설정입니다
:-) 더 나은 아이디어가 있다면
다른 조언에 감사드립니다. 이전 버전과의 호환성 및 작동 방식에 대한 관리의 예입니다.
감사합니다. "하위 모듈에 대한 아이디어는 부모 레포 내에 특정 커밋을 기록하는 것입니다." -이게 내가 원하는 결과 야. 그건 내가 생각했던 것보다 간단했다. –