-
Notifications
You must be signed in to change notification settings - Fork 20
[BE] 서브모듈
xrabcde edited this page Sep 23, 2021
·
22 revisions
Git 저장소 안에 다른 Git 저장소를 디렉토리로 분리해 넣는 것이 서브모듈이다. - git-scm.com
하나의 레포지토리안에, 또 다른 레포지토리를 두는 것을 뜻한다.
- 기본적으로 깃 레포지토리는
.gitignore
에 의해 무시되는 파일과 빈 디렉토리를 제외하고 자신의 모든 하위 디렉토리 및 파일을 관리하지만, 서브모듈로 만들어진 디렉토리의 하위 내용은 관리하지 않는다. - 온라인 저장소에 올려 브라우저 상으로 확인하더라도 서브모듈의 존재는 알 수 있지만, 내부는 알 수 없다. // todo public 저장소도 그러한지 확인하기
- private 저장소를 서브모듈로 등록해둔다면, 해당 저장소에 대한 접근 권한이 있는 일부의 사람들만 슈퍼 프로젝트 레포지토리를 내용의 누락없이 온전히 clone 할 수 있다는 의미가 된다.
- 이를 응용하여, 일부의 권한이 있는 깃 계정을 사용하는 유저들에게만 공유되어야 하는 파일들(주로 보안과 관련있는 값들이 있는 파일들)을 서브모듈에 넣어 외부로부터 감출 수 있다.
- 서브 모듈로 사용할 레포지토리는 원격 저장소에 미리 만들어두고, 필요한 파일을 세팅해두었다고 전제한다.
- private 저장소를 서브모듈로 사용하고자 하는 경우, 로컬 환경에 등록된 git 계정은 해당 레포지토리에 대한 접근 권한이 있다고 전제한다.
i) 슈퍼 프로젝트 레포지토리에서 서브모듈을 추가하고자 하는 디렉토리로 이동한다.
$ cd backend/src/main/resources
ii) git submodule add
커맨드를 이용해, 서브모듈을 등록한다.
git submodule add -b ${브랜치명} ${서브모듈로 쓰고자하는 레포지토리 Url}
$ git submodule add -b main https://github.com/zzimkkong/config
iii) 최상위디렉토리/.gitmodules
에 잘 추가되었다면 성공이다.
[submodule "backend/src/main/resources/config"]
path = backend/src/main/resources/config
url = https://github.com/zzimkkong/config.git
branch = main
iv) 젠킨스와의 연동은 문서 하단에 별도로 추가 서술한다. // Todo 젠킨스 직접 설정해보고 세팅법 올리기
i) 클론 옵션에 --recurse-submodules
을 붙여준다.
git clone --recurse-submodules ${슈퍼 프로젝트 레포지토리 Url}
$ git clone --recurse-submodules https://github.com/woowacourse-teams/2021-zzimkkong.git
i) 프로젝트를 최신화 해준다.
$ git pull
ii) 서브 모듈들을 일괄적으로 클론해온다.
$ git submodule update --init --remote
슈퍼 프로젝트 레포지토리에서 pull
을 한다고 해서 서브모듈의 커밋까지 최신화 되지 않는다.
i) 각 서브 모듈을 일괄적으로 업데이트 해준다.
git submodule update --remote --merge
$ git submodule update --remote --merge