ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [GIT] 서브모듈 이용해 공용 로직 공유하기
    카테고리 없음 2020. 7. 29. 17:19
    리액트를 사용해서 프로젝트를 만들었는데 생각해보니 모바일 앱으로도 만들면 좋겠다는 생각이 들었다. 아, 그럼 리액트 네이티브를 사용해서 만들면 되겠네 하고 리액트 네이티브 프로젝트를 시작한다. 

    음? 그런데 생각해보니 어차피 거의 동일한 서비스를 각각 리액트와 리액트 네이티브를 사용해서 만드는 건데, 중복되는 코드가 되게 많지 않을까? 이걸 굳이 각각 따로 짜야 하는 건가 의구심이 든다. 뭔가 방법이 없을까?

     

    * 서브모듈(submodule)

    위 케이스의 리액트-리액트 네이티브와 같이 복수의 프로젝트지만 공통으로 사용되는 부분이 있을 수 있다. 이 공통된 부분을 마치 모듈처럼 사용할 수 있다. 깃의 서브모듈(submodule)은 복수의 프로젝트 사이에서 모듈을 공유해 사용하는 것이 가능해진다. 

    서브모듈은 기본적으로 깃 저장소 안의 저장소라고 이해할 수 있다. 외부의 깃 저장소를 클론한 후 나의 깃 저장소 안에 추가하는 것이다. 

    레포 안의 레포 안의 레포 안의 레포 .... 

     

    다시 위 케이스로 돌아가서 이야기해보자면, 리액트 프로젝트와 리액트 네이티브 프로젝트의 공통부분을 별도로 모듈화시킬 수 있을 것이다. 이 모듈을 각각의 프로젝트에서 서브모듈로 불러와 사용하면 프로젝트 간 중복작업이 줄어들어 효율성 증대를 기대할 수 있다. 

    * 서브모듈 추가

    // 서브모듈 추가
    git submodule add {서브모듈 원격 저장소 주소} {서브모듈 루트 디렉토리 경로}

    서브모듈 목록은 아래와 같이 볼 수 있다

    // 서브모듈 목록
    git submodule status

    *서브모듈 제거

    // 서브모듈 제거
    git submodule deinit 디렉토리
    git rm 디렉토리

    이후 커밋한다. 서브모듈을 전체제거하는 방법은 아래와 같다. 마찬가지로 명령어 실행 후 커밋한다.

    // 서브모듈 제거
    git submodule deinit .

     

    * Reference :

    git-scm.com (https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-%EC%84%9C%EB%B8%8C%EB%AA%A8%EB%93%88)

    gitkraken (https://www.youtube.com/watch?v=moC2KyxGb10&feature=emb_title)

    axosoft blog (https://blog.axosoft.com/learn-git-submodule/)

    powerumc (https://blog.powerumc.kr/449)

    TUWLAB (https://www.tuwlab.com/ece/26011)

    필오의 개발 blog (https://feel5ny.github.io/2019/01/27/Git_01/)

    댓글