Git 서브 모듈 사용

LVGL 그래픽 라이브러리를 사용하고 STM32 개발보드의 UI를 구성하려고 한다. LVGL 라이브러리는 GitHub에서 다운받아 사용할 수 있으며, 이 저장소를 내 작업환경에 서브 모듈로 등록하여 아래의 명령어를 사용하여 등록할 수 있다.

$ git submodule add <repo_url> <local_path>
$ git submodule init
$ git submodule update

위 명령어를 사용하여 서브모듈을 등록하면 .gitmodules 파일이 생성되며, 추가한 서브 모듈의 저장소 위치 및 로컬 경로를 확인할 수 있다.

$ vi .gitmodules

[submodule "Core/Src/extlib/graphic/LVGL/lvgl"]
    path = Core/Src/extlib/graphic/LVGL/lvgl
    url = git@github.com:lvgl/lvgl.git

위 내용에는 브랜치를 설정하지 않았지만, branch = <branch_name>을 추가할 경우 특정 브랜치에서 받을 수 있다. 또한 특정 리비전(태그) 버전으로 코드를 내려받길 원한다면, 서브모듈 경로에서 원하는 리비전으로 변경후 커밋하면 설정한 리비전으로 다운 받을 수 있다.

lvgl 라이브러리 v8.0.2 버전을 서브모듈을 v8.0.0으로 변경할 경우 위 이미지와 같이 특정 리비전이나 태그로 변경하고 변경된 정보를 커밋하면 된다.

 

그리고 clone을 사용하여 소스를 내려받을 때, 서브모듈까지 한번에 받으려면 --recurse-submodules 옵션을 추가하면 한번에 모든 소스를 내려 받을 수 있다.

 

서브모듈을 삭제하려면 아래의 명령어를 사용하여 서브모듈을 삭제할 수 있다.

$ git submodule deinit -f <local_path>
$ rm -rf .git/modules/<local_path>
$ git rm -f <local_path>

만약 서브모듈 경로를 Core/Src/extlib/graphic/LVGL/lvgl로 설정하였다면, local_path에 이 값을 입력하면 된다.