2014-08-27 6 views
3

이것은 끔찍할 수 있습니다. 확실하지 않습니다.자식이 "베어"서브 모듈을 허용합니까?

우리가 작업 디렉토리

/product 
/product/command.script 
/product/config/ (bare git repo) 

그리고

/config 
/config/config.json 

command.script 파일에 액션이있는 작업 디렉토리와의 repo "설정"으로 REPO "제품"을 가지고 있다고 가정 해 봅시다 베어 레포와 상호 작용한다. 전의. command.script BRANCH1를 실행하면 "/ 제품/설정은 /"는 "제품"의 repo 폴더는 "제품"의 repo의 서브 모듈이 될 수 있음을 것을 어떤 방법이 있나요 명령

git show BRANCH1:config.json 

를 실행하는 것입니다 은 "설정"의 repo는 그 기원에서

git clone --bare [config origin here] config 

를 복제되고 "제품"의 repo를 가져올 때, "/ 제품/설정"서브 모듈은

git fetch origin '*:*' 

을 가져 또는 인 수 복제 이게 뭐야? 어떤 종류의 갈고리로 처리 할 수 ​​있습니까?

+0

베어 서브 모듈 허용 : 나는 그렇게 생각하지 않습니다. – linquize

답변

2

아니요 : 리포 "제품"을 가져 오면 색인에 gitlink (special entry recording the SHA1 of the submodule)이 포함됩니다.

이 엔트리는 중첩 된 (서브 모듈) 저장소로 소비되도록 비 베어 레포에서만 사용할 수 있습니다. git clone man page 언급 왜

: 클론이 생성

--recursive 
--recurse-submodules 

후, 기본 설정을 사용하여, 내의 모든 서브 모듈을 초기화합니다. 복제가 완료된 직후에 git submodule update --init --recursive을 실행하는 것과 같습니다. 복제 된 저장소가 worktree/체크 아웃이없는 경우
이 옵션은 무시됩니다 (즉, 주어진 --no-checkout/-n, --bare, 또는 --mirror의 경우)을 의미


config에 가장 repo가 ​​오른쪽 SHA1 (첫 번째 product repo에 gitlink로 기록 된 것)에 별도로 (심지어 맨손으로) 복제되고 git show BRANCH1:config.json이 다른 복제 된 repo (with git -C)에서 실행되도록해야합니다.

+0

고마워, 나는 그들이 -C 스위치를 추가했다는 것을 몰랐다. 그것은 유용 할 것이다. 그래서 갈고리는 갈 수있는 좋은 방법이 아니겠습니까? –

+0

@TylerClendenin 예, 클론 - 베어로 리포를 푸시 할 수 있습니다 (베어 레포로 푸시 할 수 있음). 어제 http://stackoverflow.com/a/25499592/6309에서 설명한 것처럼 원하는 모든 프로세스를 수행하기 위해 수신 후크를 추가 할 수 있습니다. – VonC