Django 프로젝트를 진행하면서, 여러 Django 프로젝트간의 Model을 공통적으로 사용해야 하는 경우가 생겼다. 이 Model 들의 관리가 공통적으로 유지되게 하기 위해서 submodule을 도입하고자 하였다.
Git Submodule 추가
- 우선적으로 공통적으로 쓸 Model들을 관리하기 위한 "table"이라는 이름의 Django App을 생성하였고 진행중이였던 프로젝트였기 때문에 기존의 프로젝트에서 어느정도의 Model 생성 작업을 완료하였다.
- 어느정도 완성된 "table" App을 분리하기 위해서 "table"만을 가진 private Git repository을 생성하였다.
- 최상위 디렉토리에 "table" App이 있는 형태로 repository를 만들었고, 이 형태로 여러 Django 프로젝트에서 사용될려면 submodule 생성 형태가 Repository 이름을 무시하고 바로 table이 전체 Django프로젝트 하위의 하나의 App으로 들어가는 형태로 구현해야 했다.
git submodule add <submodule Repository의 Git주소> <메인 Repository에 추가할 경로>
이러한 상황에서 메인 Django 프로젝트의 프로젝트명을 Manager라고 한다면, submodule을 추가할 경로는 다음과 같다.
Git Submodule 삭제
- Submodule 추가 작업을 하면서 원하는 위치와 이름으로 생성되지 않아 submodule을 삭제해야하는 일이 많았다.
- 추가한 submodule 을 삭제하는 방법은 다음과 같다.
- git submodule 명령어로 현재 submodule이 생성되었는지 확인하기
git submodule
어떠한 값도 출력하지 않는다면, submodule이 생성되지 않은 것이다.
- git submodule deinit -f <submodule 이름>
Git submodule deinit -f <submodule 이름>
<submodule 이름>은 1번에서 출력된 submodule 이름입니다.
- git submodule deinit 을 하더라도, 아직 submodule이 남아있는 형태가 되는데 이는 submodule 추가 당시에 생성된 파일 및 폴더를 git rm -f 명령어로 삭제해주어야 한다!