프로젝트를 하며 yml과 같은 민감한 정보들을 안전하게 관리하도록 서브모듈을 사용하기로 결정하였다.
1. SubModule이란?
SubModule은 Git에서 제공하는 기능으로, 외부 라이브러리나 다른 프로젝트를 현재 레포지토리에 포함시킬 수 있는 기능이다. 덕분에 코드 중복 없이 다른 프로젝트의 코드를 가져다 쓸 수 있다.
2. 왜 SubModule을 사용했을까?
다양한 프로젝트를 진행하면서, 데이터베이스 설정 정보 같은 민감한 정보를 여러 레포지토리에서 중복 없이 관리하고 싶을 때가 있다. 이럴 때 SubModule을 사용하면, 중요한 정보들을 Private 레포지토리에 저장해 두고 필요한 메인 레포지토리에서 쉽게 가져와 쓸 수 있다. 이렇게 하면 실수로 중요한 정보를 공개하는 상황을 방지할 수 있다.
3. SubModule을 어떻게 사용할까?
먼저 민감한 정보를 저장할 Private 레포지토리를 만들어야 한다. 이때 레포지토리는 반드시 Private으로 설정해야 한다. 다른 사람이 내용을 볼 수 있기 때문!
Private 레포지토리에 필요한 설정 파일이나 코드를 추가하고 커밋한 다음, 메인 레포지토리의 터미널에서 다음 명령어를 입력한다.
git submodule add <submodule-url>
여기서 <submodule-url>은 Private 레포지토리의 URL을 의미한다.
이 과정을 마치면,. gitmodules 파일이 생성되는데, 이 파일에는 SubModule의 경로와 URL 정보가 들어 있다.
[submodule "doochul/src/main/resources/security"]
path = doochul/src/main/resources/security
url = <https://github.com/KwakDooChul/security.git>
이제 커밋 후, 푸쉬만 하면 적용이 된다.
4. 서브 모듈의 정보 최신화 하기
메인 레포지토리를 처음 클론할 때, SubModule은 자동으로 클론 되지 않는다. 이럴 때는 다음 명령어를 사용하면 SubModule까지 한 번에 클론 할 수 있다.
git clone --recurse-submodules https://github.com/KwakDooChul/doochul-backend.git
만약 서브모듈에 변경 사항이 생겼다면, 메인 레포지토리와 동기화해야 한다. 방법은 간단하다!
- 서브모듈 레포지토리에서 수정 사항을 적용하고 커밋하기
서브모듈 레포지토리로 이동해서 필요한 수정 사항을 수정한 다음, 커밋을 한다. - 메인 레포지토리로 돌아와 동기화하기메인 레포지토리로 돌아와서, 다음 명령어로 서브모듈을 최신 상태로 업데이트한다.
git submodule update --remote --merge
3. 변경된 파일 커밋
메인 레포지토리에서 변경된 파일을 커밋하고 푸쉬한다.
git add .
git add <서브모듈의 위치> # 예: src/main/resources/config
git commit -m "서브모듈 업데이트"
위 사진처럼 커밋이 변경되는(최신화) 되는 걸 볼 수 있다.
이렇게 하면 서브모듈의 최신 변경 사항이 메인 레포지토리에 반영된다!!
5. 결론
SubModule을 사용하면 yml 같은 민감한 정보를 실수로 푸시하는 것을 방지할 수 있다. 또한, 여러 레포지토리에서 같은 설정 정보를 중복 없이 사용할 수 있다는 큰 장점이 있다!
'WEB' 카테고리의 다른 글
JUnit을 사용해서 Java 단위 테스트 하기 (0) | 2024.09.02 |
---|---|
RDB와 NoSQL의 차이점 (3) | 2024.09.01 |
영속성 컨텍스트란? (1) | 2024.08.31 |
Java Thread란 무엇일까? (1) | 2024.08.30 |
배포 서버없이 프론트단과 백단 통신하기 (3) | 2024.08.27 |
HTML이 웹 브라우저에서 어떻게 작동할까? (1) | 2024.08.26 |
전략 패턴을 사용해 로그인 추상화 하기 (0) | 2024.08.08 |
@NoArgsConstructor 액세스 레벨을 PROTECTED로 하는 이유 (1) | 2024.06.09 |