Git Submodule

June·2024년 1월 2일
0

실무 문제

목록 보기
9/10

학습 배경

우테코를 할 때 db 패스워드, 시크릿 키 같은 것들을 저장하기 위해 서브모듈을 쓰는 팀이 많았다. 본 프로젝트 레포 (public) -> 민감 정보를 저장한 레포 (private) 이렇게 구성하는 형식이다. 그때 우리 팀에서는 암호화하는 방식을 써서 서브모듈을 쓸 일이 없었다. 하지만 지금 회사에서 서브모듈로 공통적으로 필요한 스크립트들을 관리하고 있어 간단하게라도 살펴보기로 했다.

서브 모듈

서브모듈은 두 프로젝트를 서로 별개로 다루면서도, 하나가 다른 프로젝트를 사용할 수 있게 만들어주는 도구다.

앞서 말한것처럼 민감한 정보들을 github에 올려 관리할 경우, 서브 모듈은 프라이빗으로 설정하고, 상위 레포에서 서브 모듈을 이용하는게 좋은 예다. 또 도커파일 같은 경우 msa 환경에 있는 모든 레포들이 갖고 있을 필요가 없다.

간단 실습

1. 레포 생성

레포 두개를 만든다.

2. 하위 레포에 파일 생성

하위 레포에 공통으로 사용할 파일을 만들어서 푸시한다.

3. 상위 레포에서 서브 모듈 등록

cd master-repository
git submodule add https://github.com/injoon2019/sub-repository.git

이렇게 하면 로컬에서 .gitmodules가 생긴다.

파일을 열어보면 이렇게 어떤 서브모듈들을 가지는지 알수 있게 나온다.

4. 상위 레포 파일 확인

git status 명령어를 입력하면 .gitmodules 가 버전관리 대상임을 알 수 있다.

5. 주의사항

git은 서브모듈 디렉토리 하위의 파일 수정 사항을 직접 추적하지 않고, 디렉토리 통째로 커밋으로 취급한다. 따라서 서브모듈에서 변경이 있었다면 상위 레포에서 sub-repository에 가서 git pull을 해야한다. 또는 git submodule update --remote 를 통해 서브모듈의 최신 커밋을 가져올 수 있다.

실사용

git clone --recurse-submodules https://github.com/injoon2019/master-repository.git

명령어를 사용하면 서브모듈까지 함께 클론할 수 있다.

참고

https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-%EC%84%9C%EB%B8%8C%EB%AA%A8%EB%93%88

0개의 댓글