큰 리포지토리 작업

완료됨

Git은 널리 채택되고 권장되는 훌륭한 버전 제어 시스템이지만 큰 리포지토리로 작업할 때 몇 가지 문제를 만들고 처리해야 합니다.

분산 버전 제어 시스템에 리포지토리의 로컬 복사본이 있는 것은 작동하지만 큰 리포지토리가 있는 경우 중요한 문제가 될 수 있습니다.

예를 들어 Microsoft는 300GB가 넘는 데이터가 있는 리포지토리를 내부 시스템에서 Git으로 마이그레이션할 때 이 문제를 발견했습니다.

리포지토리가 커지는 이유

큰 리포지토리에는 두 가지 주요 원인이 있습니다.

  • 긴 기록
  • 큰 이진 파일

얕은 클론

개발자가 로컬 리포지토리에서 사용 가능한 모든 기록이 필요하지 않은 경우 단순 클론을 구현하는 것이 좋습니다.

로컬 개발 시스템의 공간과 동기화하는 데 걸리는 시간을 모두 절약합니다.

실행하려는 클론의 깊이를 지정할 수 있습니다.

git clone --depth [depth] [clone-url]

분기를 필터링하거나 단일 분기만 복제하여 클론을 줄일 수도 있습니다.

Git용 VFS

Git용 VFS는 대규모 리포지토리에 도움이 됩니다. Git LFS 클라이언트가 필요합니다.

일반적인 Git 명령은 영향을 받지 않지만 Git LFS는 표준 파일 시스템을 사용하여 서버에서 파일이 필요할 때 필요한 파일을 백그라운드에서 다운로드합니다.

Git LFS 클라이언트가 오픈 소스로 릴리스되었습니다. 프로토콜은 REST 엔드포인트와 유사한 4개의 엔드포인트가 있는 간단한 프로토콜입니다.

큰 리포지토리에 대한 자세한 내용은 다음을 참조하세요: 대용량 파일 다루기, Git용 가상 파일 시스템: 엔터프라이즈 규모에서 Git 활성화 .

스칼라

스칼라 아이콘의 스크린샷

스칼라는 Windows 및 macOS에서 사용할 수 있는 .NET Core 애플리케이션입니다. 매우 큰 리포지토리에서 Git 명령 성능을 최대화할 수 있도록 Git용 도구 및 확장 기능을 제공합니다. Microsoft는 Windows 및 Office 리포지토리에 사용합니다.

Azure Repos가 리포지토리를 호스트하는 경우 GVFS 프로토콜사용하여 리포지토리를 복제할 수 있습니다.

다음과 같은 몇 가지 고급 Git 기능을 사용하도록 설정하여 달성합니다.

  • 부분 복제: 모든 Git 개체를 즉시 다운로드하지 않음으로써 작업 리포지토리를 가져오는 시간을 단축합니다.
  • 백그라운드 프리페치: 매시간 모든 원격에서 Git 개체 데이터를 다운로드하여 포그라운드 git 인출 호출 시간을 줄입니다.
  • 스파스 체크 아웃: 작업 디렉터리의 크기를 제한합니다.
  • 파일 시스템 모니터: 최근에 수정된 파일을 추적하고 Git에서 전체 작업 트리를 검색할 필요가 없습니다.
  • 커밋 그래프: 커밋 탐색과 도달 가능성 계산을 빠르게 하여 git 로그와 같은 명령의 속도를 높입니다.
  • 다중 팩 인덱스: 여러 팩 파일에서 빠른 개체 조회를 가능하게 합니다.
  • 증분 재포장: 다중 팩 인덱스를 사용하여 동시 명령을 중단하지 않고 압축된 Git 데이터를 더 적은 수의 팩 파일로 다시 패키지합니다.

메모

Scalar가 새 Git 버전이 릴리스될 때 자동으로 구성하는 기능 목록을 업데이트합니다.

자세한 내용은 다음을 참조하세요.