스택큐힙리스트

기트 서브모듈은 추가적인 무게 없이 본문

카테고리 없음

기트 서브모듈은 추가적인 무게 없이

스택큐힙리스트 2023. 12. 4. 16:19
반응형

아직 Git 마스터는 아니지만, 해결할 수 없는 문제에 직면했습니다. 워드프레스 커스텀 스켈레톤이 있는 저장소가 있고, git submodule add wp_repo_url을 사용하여 원래 저장소를 서브모듈로 추가했습니다. 다음 명령을 사용하여 로컬 머신에 저장소를 클론하면:


git clone --recursive https://github.com/user/repo local_dir

WP 서브모듈이 예상대로 다운로드되지만, 여기에 문제가 있습니다 - 실제 파일 크기는 20.7Mb만이지만, .git/modules/core/objects/pack에 124Mb 크기의 .pack 파일이 있는데, 아마도 이는 서브모듈의 커밋 히스토리 또는 수정된 내용일 것입니다.


이 추가적인 용량을 다운로드하지 않고 서브모듈을 다시 추가하거나 클론할 때 수정할 수 있는 방법이 있을까요?


업데이트:


@iclmam의 도움으로 다음 설정을 생각해 냈습니다:


  • 내 스켈레톤 저장소는 서브 모듈로 WordPress를 가지고 있으며, 전체 원본 저장소를 포함한 히스토리를 가집니다.

  • 스켈레톤에서 새 프로젝트를 생성할 때, --recursive 옵션 없이 메인 파일만 얻기 위해 클론합니다. 그리고 서브모듈을 위한 빈 폴더를 만듭니다.

  • 만약 전체 히스토리가 있는 WordPress가 필요하다면 - 예를 들어, 내 플러그인/테마의 역 호환성을 테스트하기 위해 다른 WP 브랜치/태그 사이를 전환해야 할 때 - 전체 히스토리를 가진 이 서브모듈을 가져옵니다.

  • 최신 WP 버전의 깨끗한 설치만 필요하다면, wp 디렉터리로 이동하여 이전 방법을 사용합니다:


    curl -L -O http://wordpress.org/latest.zip
    unzip latest.zip
    mv wordpress/* .
    rm latest.zip
    rm -rf wordpress


완벽한 해결책은 아닙니다(가능한 한 모든 것을 자동화하려고 했지만), 하지만 현재로서는 작동합니다.


원본 질문에 대한 어떤 조언도 환영합니다.

답변 1

이 커밋들을 확인하세요: 커밋 f6fb30a, 커밋 abed000커밋 37f52e9 (2016년 8월 3일) Stefan Beller (stefanbeller).

(커밋 dc7e09a, 2016년 8월 8일) Junio C Hamano -- gitster --이 병합함


> submodule update: --[no-]recommend-shallow 옵션 학습하기


가끔까지는 프로젝트의 상위버전에서 서브모듈의 이력을 중요하게 생각하지 않을 수도 있습니다. 하위 사용자에게 더 쉽게 만들기 위해 .gitmodules 안에 'submodule.<name>.shallow'라는 부울 필드를 허용하고, 이는 상위 이력을 중요하게 생각하는지 추천하는 데 사용할 수 있습니다.


이 필드는 초기 클론에서 기본적으로 인정됩니다. --no-recommend-shallow 옵션을 줌으로써 무시할 수 있습니다.


답변 2

깃 서브모듈 (Git submodule)은 깃(Git) 저장소 내에서 다른 깃 저장소를 포함하는 기능으로, 하위 프로젝트를 독립적으로 추적하고 업데이트할 수 있는 강력한 도구입니다. 그러나 깃 서브모듈은 때로는 추가적인 부담을 가질 수 있습니다. 이번 글에서는 깃 서브모듈로 인한 부담 없이 효과적으로 사용하는 방법에 대해 알아보고자 합니다.
첫째, 깃 서브모듈 사용 시 주의해야 할 점은 단순한 저장소 포함이 아닌, 적절한 용도로 사용해야 한다는 것입니다. 너무 많은 서브모듈을 추가하면 저장소를 관리하기가 복잡해지고, 성능 저하를 초래할 수 있습니다. 그러므로 서브모듈을 사용하기 전에 얼마나 많은 서브모듈이 필요한지 신중하게 고려해야 합니다.
둘째, 깃 서브모듈은 주의해서 업데이트해야 합니다. 상위 저장소에서 서브모듈의 업데이트를 하면 해당 서브모듈에 가지고 있는 변경 사항을 손실할 수 있습니다. 이를 방지하기 위해 변경 사항을 커밋한 후 서브모듈을 업데이트하는 것이 좋습니다. 이를 통해 서브모듈의 업데이트와 관련된 문제를 최소화할 수 있습니다.
셋째, 깃 서브모듈은 적절한 문서화와 버전 관리가 필요합니다. 서브모듈을 사용하는 프로젝트의 사용자가 해당 서브모듈에 대한 이해도를 높이기 위해 명확한 문서화가 필요합니다. 또한, 서브모듈의 버전 업데이트나 이슈 관리는 정기적으로 수행되어야 합니다. 이를 통해 불필요한 혼선을 방지하고 코드의 신뢰성을 유지할 수 있습니다.
마지막으로, 깃 서브모듈의 선택은 신중하게 이루어져야 합니다. 서브모듈을 사용하기 전에 관련된 다른 도구나 라이브러리가 있는지 검토하고, 서브모듈이 가지는 이점이 실제 프로젝트에 맞는지 고려해야 합니다. 깃 서브모듈은 모든 상황에 적합한 도구는 아니지만, 적절하게 활용한다면 효과적인 개발과 유지보수를 할 수 있습니다.
이와 같이 깃 서브모듈을 부담 없이 효과적으로 사용하는 방법을 알아보았습니다. 적절한 용도로 선택하고, 주의 깊게 업데이트하며, 문서화와 버전 관리를 철저히 수행한다면 깃 서브모듈은 개발 프로젝트에 있어 가치 있는 도구로 사용될 수 있을 것입니다.

반응형
Comments