반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

테크매니아

Submodule VS Subtree 본문

카테고리 없음

Submodule VS Subtree

SciomageLAB 2024. 10. 4. 12:01
반응형

Submodule

  • 컴포넌트 기반 시스템(또는 개발방법론)(안드로이드 같은 것)을 개발할 때 유용하다
    • 각각의 리포가 컴포넌트에 해당한다.
  • Submodule은 별개의 리포가 링크로 연결된 것으로 메인 저장소 크기에 영향을 주지 않는다.
  • 메인 저장소가 Submodule에 종속적이라면 메인이 변하거나 Submodule이 업데이트 됬을 때 같이 같이 pull을 받아주어야 하므로 버전 싱크를 맞추기 어려울 수 있다.

Subtree

  • 서비스 지향 시스템(또는 개발방법론)을 개발할 때 유용하다.
  • 작업 트리를 나눈 것으로 리포 자체는 하나를 사용한다. 서브트리별로 히스토리를 관리하기 때문에 리포 자체는 크기가 커진다.subtree를 사용하면 다른 저장소를 하나의 저장소로 히스토리와 함께 통합할 수 있다. 통합하게 되면 저장소의 크기는 커지지만 코드와 히스토리를 재사용하기에는 더욱 좋다.
  • 히스토리만 다른 트리로 관리하는 것이고 실제로 코드의 변경 사항이 적용된다. 메인 또는 서브에서 서로의 작업영역에 여전히 영향을 줄 수 있는 위험이 있다.
    • 서브트리의 변경 내역은 상위트리에 반영된다!
      git subtree add --prefix=<path> <repo> <branch>
      git subtree pull --prefix=<path> <repo> <branch>
      git subtree push --prefix=<path> <repo> <branch>

      운용법

      브랜치 또는 원격 저장소로 subtree를 나눠 구성할 수 있다.
      /Root
      /Root/liba
      /Root/libb
      /Root/libc
      위와 같은 구조에서 git subtree --prefix=./liba origin liba-branch로 subtree를 split하여 사용하거나 liba를 별도의 리포로 분리하여 git subtree a --prefix=./liba liba-origin으로 관리하면 git subtree push git subtree pull명령어로 전체를 받지 않고 모듈 단위로 나누어서 관리가 가능하다.
반응형