Post
KO

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 파일을 확인해보면 된다.

  1. submodule로 등록된 내용을 확인해본다.

  2. url path가 정상적으로 등록되어졌는지 확인한다.

설정을 알맞게 구성하면 다음과 같은 명령어를 실행한다.

git submodule sync git submodule update --init --recursive

이렇게 하면 정상적으로 로컬에서 build가 잘되는 것을 확인할 수 있다.

This article is licensed under CC BY 4.0 by the author.