git submodule
protobuf repository를 추가하는 방법으로 submodule을 이용해서 다른 repository 저장소를 포함시키는 것 같다.
내용을 한번 정리해본다.
Git 서브모듈(Submodule)은 하나의 Git 저장소(repository) 안에 다른 Git 저장소를 포함시킬 수 있는 기능입니다. 서브모듈을 사용하면 외부 소스코드나 라이브러리를 별도의 저장소로 관리하면서 메인 프로젝트 저장소에 연결할 수 있습니다. 이는 외부 프로젝트를 포함하거나 공통 코드를 여러 프로젝트에서 재사용할 때 유용합니다.
주요 기능 및 용도:
-
독립적인 프로젝트: 서브모듈을 사용하여 독립적인 프로젝트 또는 라이브러리를 메인 프로젝트에 포함시키고, 각각의 프로젝트를 자체 저장소에서 관리할 수 있습니다.
-
버전 추적: 서브모듈은 특정 커밋을 참조합니다. 따라서 메인 프로젝트에는 서브모듈의 특정 상태가 기록되며, 언제든지 특정 버전으로 되돌리거나 업데이트할 수 있습니다.
-
참조 관리: 메인 프로젝트의 저장소에 서브모듈의 실제 콘텐츠가 복사되는 것이 아니라, 서브모듈 저장소의 URL과 참조(참조하는 커밋 ID)만 기록됩니다.
서브모듈 추가하기:
메인 프로젝트에 서브모듈을 추가하려면 다음 명령어를 사용합니다:
git submodule add 여기서 <repository-url>은 서브모듈로 추가하려는 외부 저장소의 URL이며, <path-to-submodule-directory>는 메인 프로젝트 내에서 서브모듈을 위치시킬 디렉토리의 경로입니다.
서브모듈 초기화하고 업데이트하기:
서브모듈이 포함된 프로젝트를 처음 체크아웃했을 때 서브모듈의 콘텐츠를 가져오려면 서브모듈을 초기화하고 업데이트해야 합니다:
git submodule init git submodule update 혹은 다음과 같이 한 번에 수행할 수도 있습니다:
git submodule update --init 서브모듈 변경 사항 가져오기:
서브모듈의 저장소에서 최신 변경 사항을 가져오려면 서브모듈의 디렉토리로 이동하여 git pull을 수행하거나, 메인 프로젝트에서 다음 명령을 사용합니다:
git submodule update --remote
이 명령은 서브모듈이 참조하는 브랜치에 최신 변경 사항이 있을 경우 해당 변경 사항을 메인 프로젝트의 서브모듈에 반영합니다.
주의사항:
-
서브모듈은 종종 새로운 사용자에게 혼란을 줄 수 있으므로, 서브모듈을 사용하기 전에 팀 구성원들과 충분한 소통이 이루어져야 합니다.
-
서브모듈 디렉토리 내의 파일을 변경한 후에는, 해당 서브모듈의 저장소에서 커밋하고, 메인 프로젝트에서도 서브모듈의 변경 사항을 커밋해야 합니다.
// 2024.03.25
추가적으로 이미 submodule로 설정된 상태에서 로컬에서 build시 경로를 찾을 수 없는 경우가 발생했다.
우선 그럴 경우 .gitsubmodule 파일을 확인해보면 된다.
-
submodule로 등록된 내용을 확인해본다.
-
url path가 정상적으로 등록되어졌는지 확인한다.
설정을 알맞게 구성하면 다음과 같은 명령어를 실행한다.
git submodule sync git submodule update --init --recursive 이렇게 하면 정상적으로 로컬에서 build가 잘되는 것을 확인할 수 있다.