Git 한도
Azure DevOps Services
모든 고객의 안정성과 가용성을 보장하기 위해 Azure Repos의 Git 리포지토리에 리소스 제한을 적용합니다. 데이터 크기 및 푸시 수를 합리적으로 유지하면 Git에 대한 전반적인 환경이 향상됩니다.
Git은 나머지 Azure DevOps Services와 함께 속도 제한 에 참여합니다. 또한 리포지토리, 푸시의 총 크기 및 파일 및 디렉터리 경로의 길이에 제한을 적용합니다.
리포지토리 크기
리포지토리는 250GB를 초과하지 않아야 합니다. 리포지토리의 크기를 검색하려면 명령 프롬프트에서 실행하고 git count-objects -vH
"size-pack"이라는 항목을 찾습니다.
D:\my-repo>git count-objects -vH
count: 482
size: 551.67 KiB
in-pack: 100365
packs: 25
size-pack: 642.76 MiB <-- size of repository
prune-packable: 83
garbage: 0
size-garbage: 0 bytes
최적의 성능을 위해 리포지토리를 10GB 미만으로 유지하는 것이 좋습니다. 리포지토리가 이 크기를 초과하는 경우 Git-LFS, 스칼라 또는 Azure Artifacts를 사용하여 개발 아티팩트를 관리하는 것이 좋습니다.
Azure Repos는 유사한 파일을 팩에 통합하여 전체 크기를 지속적으로 줄이고 Git 리포지토리의 효율성을 높입니다. 250GB에 가까운 리포지토리의 경우 최적화 프로세스가 완료되기 전에 팩 파일의 내부 제한에 도달할 수 있습니다. 이 제한에 도달하면 리포지토리에 쓰려는 사용자에게 다음 오류 메시지가 표시됩니다. "Git 팩 파일 제한에 도달했습니다. 리포지토리가 업데이트되는 동안 쓰기 작업을 일시적으로 사용할 수 없습니다." 쓰기 작업은 최적화 작업이 완료된 직후 복원됩니다.
파일은 100MB를 초과하지 않아야 합니다. 이 제한은 Git 리포지토리의 최적의 성능과 안정성을 보장하는 데 도움이 됩니다. 대용량 파일은 복제, 가져오기 및 변경 내용 푸시와 같은 리포지토리 작업의 속도를 크게 늦출 수 있습니다. 큰 파일을 저장해야 하는 경우 주 리포지토리 외부에 저장하고 리포지토리 내에 참조만 유지하여 대용량 파일을 효율적으로 처리하도록 설계된 Git LFS(대용량 파일 스토리지)를 사용하는 것이 좋습니다. 이 방법은 Git 리포지토리의 성능 및 관리 효율성을 유지하는 데 도움이 됩니다.
푸시 크기
큰 푸시는 상당한 리소스를 소비하여 서비스의 다른 부분을 차단하거나 느리게 합니다. 이러한 푸시는 일반적인 소프트웨어 개발 활동과 일치하지 않는 경우가 많으며 빌드 출력 또는 VM 이미지와 같은 항목을 포함할 수 있습니다. 따라서 푸시는 한 번에 5GB로 제한됩니다.
큰 푸시가 정상인 한 가지 예외는 다른 서비스에서 Azure Repos로 리포지토리를 마이그레이션하는 것입니다. 이러한 마이그레이션은 단일 푸시로 제공되며, 대규모 리포지토리의 경우에도 가져오기를 차단할 의도가 없습니다. 리포지토리가 5GB를 초과하는 경우 웹을 사용하여 명령줄 대신 리포지 토리를 가져와야 합니다.
LFS 개체의 푸시 크기
Git LFS 는 5GB 리포지토리 제한에 포함되지 않습니다. 5GB 제한은 실제 리포지토리의 파일에만 적용되며 LFS로 저장된 Blob에는 적용되지 않습니다. 5GB 제한으로 인해 푸시가 실패하는 경우 파일에 LFS를 사용하여 추적하려는 파일의 확장명도 포함되어 있는지 확인 .gitattributes
합니다. 추적할 대용량 파일을 스테이징하기 전에 이 파일이 저장되고 준비되었는지 확인합니다.
경로 길이
Azure Repos는 지나치게 긴 경로를 도입하는 푸시를 거부하여 Git 리포지토리의 경로 길이를 제한하는 푸시 정책을 적용합니다. 최대 경로 길이 정책과 달리 플랫폼에서 지원하는 최대값을 적용하므로 사용하지 않도록 설정하거나 재정의할 수 없습니다.
다음 제한이 적용됩니다.
- 총 경로 길이: 32,766자
- 경로 구성 요소 길이(폴더 또는 파일 이름): 4,096자
이 정책은 푸시에서 새로 도입된 경로에만 영향을 줍니다. 기존 파일을 변경하는 경우에는 적용되지 않지만, 새 파일을 만들거나, 이름을 바꾸거나, 기존 파일을 이동하는 경우에는 적용합니다.
푸시되는 커밋이 이러한 제한을 초과하는 경로를 도입하는 경우 다음 오류 메시지 중 하나로 푸시가 거부됩니다.
VS403729: The push was rejected because commit '6fbe8dc700fdb33ef512e2b9e35436faf555de76' contains a path, which exceeds the maximum length of 32766 characters.
VS403729: The push was rejected because commit 'd23277abfe2d8dcbb88456da880de631994dabb4' contains a path component, which exceeds the maximum length of 4096 characters.