Git 모노레포에서 일부만 clone하기

40 Views
한국어
#Git#Mono Repo#git clone#모노레포

모노레포란?

ext_1757057462508_img.png

  • 둘 이상의 논리적 프로젝트(예: iOS 클라이언트와 웹 애플리케이션)가 포함된 리포지토리.
  • 이러한 프로젝트는 관련이 없거나, 느슨하게 연결되어 있거나, 다른 수단으로(예: 종속성 관리 도구를 통해) 연결할 수 있음.
  • 리포지토리는 여러 면에서 큽니다.
    • 커밋의 수
    • 브랜치 및/또는 태그의 수
    • 추적된 파일의 수
    • 추적되는 콘텐츠의 크기(리포지토리의 .git 디렉터리를 보고 측정)

 

Git sparse checkout

모노레포로 구성된 git 레포지토리 전체를 clone 하면 너무 비효율적입니다.

git에서는 일부만 가져와서 사용할 수 있게 기능을 제공합니다. 매우 효율적으로 로드할 수 있습니다.

 

git 버전 2.25이상만 가능합니다.

 

clone

파일 없이 클론 합니다. 파일 없이 깃 히스토리만 가져옵니다.

git clone --filter=blob:none --no-checkout <GITHUB_URL>

 

spare init 

sparse checkout 기능을 활성화합니다.

git sparse-checkout init

 

sparse set

어떤 디렉터리를 가져올 지 정합니다.

server/schedulerserver디렉터리 내부의 scheduler디렉터리를 가져옵니다.

client/android도 마찬가지입니다.

git sparse-checkout set server/scheduler client/android

 

그럼 아래와 같이 구성됩니다.

.
├── .git/              <-- (Hidden folder where the actual Git data is stored)
└── client/
|   └── android/
|       ├── (Android project files and folders...)
|       └── ...
└── server/
    └── scheduler/
        ├── (Scheduler-related files and folders...)
        └── ...

set 은 불러오는게 아니라 어떤 것을 불러올 지 정합니다. 실제로 불러오는 동작은 checkout에서 하게됩니다.

 

checkout

실제로 위에서 지정한 디렉터리를 다운로드하고 세팅합니다.

git checkout master

 

Related Posts