오픈소스SW

오픈소스SW_Chapter11_서브모듈

강용민 2022. 12. 8. 18:31

대형 프로젝트

규모가 큰 프로젝트는 저장소 용량이 많이 필요하지만 단지 용량이 크기만 한 저장소는 비효율적이다. 필요에 맞게 작은 저장소로 분할하여 운영하는 것이 더 효율적이다.

깃은 이러한 방식을 지원하는데, 저장소의 분할 개념을 서브모듈이라 한다. 서브모듈은 저장소 하나가 다른 깃 저장소를 포함하는 형태를 의미한다.

서브 모듈

보통 메인저장소는 부모 저장소를 분할 저장소는 자식 저장소를 의미한다. 부모 자식 관계로 분리된 로컬 저장소는 또다시 개별 원격 저장소와 연결되어있다.

 

실습을 위한 저장소 준비

서브모듈 추가

저장소를 모듈로 연결하려면 submodule 명령어를 사용해야 한다.

  • git submodule add 원격저장소URL 폴더이름

서브 모듈로 저장소가 추가되면 메인 저장소는 서브 저장소를 서브 폴더 형태로 취급한다.

처음으로 메인 저장소에 서브모듈이 등록되면 깃은 루트 위치에 설정 파일(.gitmodules)을 생성하는데, 설정 파일은 메인 저장소와 연결된 자신 저장소들을 관리한다.

또한 자식 원격 저장소는 같지만 parent/child와 child는 별개의 저장소로 인식해 한쪽이 업데이트를 한다해서 다른쪽이 자동으로 업데이트되지는 않는다. 그래서 다음 명령어로 업데이트 해줘야한다.

  • git submodule update

 

문제

서브모듈이란 무엇인가??

저장소 하나가 다른 깃의 저장소를 포함하는 형태

 

저장소를 분산하기 위해 메인 저장소와 자식 저장소를 따로 둔다고 가정하자. 메인 저장소에 자식 저장소를 추가하려면 어떤 명령어를 사용하는가?

git submodule add 원격저장소URL 폴더이름

 

서브모듈 정보는 어디에 저장되는가??

.gitmodules

 

parent/child와 child는 별개의 저장소로 인식해 한쪽이 업데이트가 된다해서 다른쪽이 자동으로 업데이트가 되는것이 아니다. 이는 맞는가??

맞다. 그래서 다음 명령어로 업데이트를 해줘야한다. git submodule update 아니면 pull로 업데이트해도 된다.