편집 : 다중 GB SVN 저장소를 Git 또는 /programming/540535/managing-large-binary-files-with-git 로 이동하는 것과 같은 유사한 질문과 달리 내 시나리오에는 여러 하위 프로젝트가 포함되지 않습니다. git submoduels 또는 git-annex에 적합한 매우 큰 바이너리 파일로 쉽게 변환 할 수 있습니다. 바이너리가 테스트 스위트 인 단일 리포지토리이며, 그래픽과 같은 컴파일 타임 자산과 마찬가지로 동일한 개정의 기본 소스 코드에 밀접하게 결합되어 있습니다.
svn에서 오래된 중형 / 대형 (50 명의 사용자, 60k 개정, 80Gb 기록, 2Gb 작업 사본) 코드 저장소를 전환하는 방법을 조사 중입니다. 사용자 수가 늘어남에 따라 트렁크에 많은 변화가 발생하고 코드 검토가 어려운 여러 커밋에 기능이 퍼지는 경우가 많습니다. 또한 분기없이 잘못된 코드를 "게이트"할 수있는 방법이 없으며 트렁크에 커밋 한 후에 만 검토를 수행 할 수 있습니다 . 대안을 조사 중입니다. 우리가 자식으로 이동할 수 있기를 바랐지만 몇 가지 문제가 있습니다.
git가 진행되는 한 현재 저장소의 문제는 크기입니다. 거기에 오래된 균열이 많이 있으며, git로 변환 할 때 --filter-branch로 청소하면 크기를 5-10GB 정도로 줄일 수 있습니다. 이것은 여전히 너무 큽니다. 저장소 크기가 큰 가장 큰 이유는 테스트에 입력 할 바이너리 문서가 많기 때문입니다. 이 파일은 0.5MB와 30MB 사이에서 다양하며 수백 가지가 있습니다. 또한 많은 변화가 있습니다. 나는 서브 모듈, git-annex 등을 살펴 보았지만 서브 히스토리에서 테스트를하는 것은 잘못된 느낌입니다. 전체 히스토리를 원하는 많은 파일에 대한 부록이있는 것처럼.
따라서 git의 분산 특성은 실제로 그것을 채택하지 못하게 막는 것입니다. 나는 실제로 분산에 관심이 없으며 저렴한 분기 및 강력한 병합 기능을 원합니다. git 사용자의 99.9 %가 가정하는 것처럼, 우리는 축복받은 베어 중앙 저장소를 사용합니다.
git을 사용할 때 각 사용자가 전체 로컬 히스토리를 가져야하는 이유를 잘 모르겠습니다. 워크 플로가 분산되지 않은 경우 해당 데이터가 사용자 디스크에서 수행하는 작업은 무엇입니까? 최신 버전의 git에서는 최근 기록 만 사용하는 얕은 클론을 사용할 수 있다는 것을 알고 있습니다. 내 질문은 : 전체 팀의 표준 운영 모드 로이 작업을 수행 할 수 있습니까? git을 항상 얕게 구성하여 전체 기록을 중앙에서만 사용할 수 있지만 기본적으로 사용자는 1000 개정의 기록 만 가질 수 있습니까? 물론 옵션은 1000 rev를 git로 변환하고 svn repo를 고고학으로 유지하는 것입니다. 그러나이 시나리오에서는 테스트 문서를 다음 수천 번 수정 한 후에도 같은 문제가 다시 발생합니다.
- 당신이 많은 바이너리 파일을 포함하는 대규모의 repos와 자식을 사용하기위한 좋은 가장 좋은 방법은 무엇입니까 않습니다 에 대한 역사를 원하는가? 대부분의 모범 사례와 자습서는이 경우를 피하는 것 같습니다. 그들은 몇 개의 거대한 바이너리의 문제를 해결하거나 바이너리를 완전히 떨어 뜨릴 것을 제안합니다.
- 얕은 복제는 정상 작동 모드로 사용할 수 있습니까? 아니면 "해킹"입니까?
- 메인 소스 리비전과 서브 모듈 리비전 사이에 밀접한 관계가있는 코드에 서브 모듈을 사용할 수 있습니까 (예 : 컴파일 타임 이진 종속성 또는 단위 테스트 스위트에서)?
- git 저장소 (온-프레미스)의 "너무 큰"크기는 얼마입니까? 4GB로 줄일 수 있다면 전환을 피해야합니까? 2GB?