문제

사용 가능한 RAM보다 큰 파일을 처리할 수 있는 분산 버전 제어 시스템(git, bazaar, mercurial, darcs 등)이 있습니까?

대용량 바이너리 파일(예:데이터 세트, 소스 비디오/이미지, 아카이브)를 비교할 수는 없지만 커밋하고 파일이 변경되면 업데이트하면 됩니다.

나는 약 1년 전에 이것을 마지막으로 살펴보았는데, 확실한 후보자 중 어느 누구도 이것을 허용하지 않았습니다. 왜냐하면 그들은 모두 속도에 대해 메모리에서 차이를 갖도록 설계되었기 때문입니다.이로 인해 대용량 파일에 대한 코드와 다른 것("자산 관리" 소프트웨어 또는 단지 rsync 및 스크립트)을 관리하기 위한 VCS가 남았는데, 이는 두 디렉토리 구조가 겹칠 때 꽤 보기 흉합니다.

도움이 되었습니까?

해결책

이 질문을 한 지 3년이 지났지만, 버전 2.0부터 Mercurial에는 대용량 파일 확장자, 내가 원래 찾고 있던 것을 달성합니다.

Largefiles 확장을 사용하면 복제 및 가져오기에 과도한 대역폭을 요구하지 않고도 Mercurial에서 압축할 수 없는 대용량 바이너리 파일을 추적할 수 있습니다.대용량 파일로 추가된 파일은 Mercurial에서 직접 추적하지 않습니다.오히려 개정판은 체크섬으로 식별되며 Mercurial은 이러한 체크섬을 추적합니다.이렇게 하면 저장소를 복제하거나 변경 집합을 가져올 때 저장소의 이전 버전에 있는 대용량 파일이 필요하지 않으며 현재 버전으로 업데이트하는 데 필요한 파일만 다운로드됩니다.이렇게 하면 디스크 공간과 대역폭이 모두 절약됩니다.

다른 팁

무료 분산 버전 제어 시스템은 이를 지원하지 않습니다.이 기능을 원한다면 구현해야 합니다.

git을 쓸 수 있습니다:그들은 Linux 커널 개발 사용 사례의 원시 성능에 관심이 있습니다.거대한 바이너리 파일로 확장할 때 성능 저하를 감수할 가능성은 거의 없습니다.나는 Mercurial에 대해 모르지만 성능을 위해 운영 모델을 스토리지 모델에 결합하는 데 git과 비슷한 선택을 한 것 같습니다.

원칙적으로 Bazaar는 온디스크 저장 및 구현 전략이 사용 사례에 최적화된 트리/분기/저장소 형식을 구현하는 플러그인을 사용하여 사용 사례를 지원할 수 있어야 합니다.내부 아키텍처가 방해를 하고 유용한 코드를 공개하는 경우 핵심 개발자가 내부 아키텍처를 수정하는 데 도움을 줄 것으로 기대합니다.또한 Canonical과 기능 개발 계약을 체결할 수도 있습니다.

특정 DVCS에 관계없이 아마도 가장 실용적인 접근 방식은 하이브리드 시스템을 구축하는 것입니다.대용량 파일 저장소를 구현하고 이 저장소의 Blob에 대한 참조를 선택한 DVCS에 저장합니다.

전체 공개:저는 Canonical의 전 직원이며 Bazaar 개발자들과 긴밀하게 협력했습니다.

예, 플라스틱 SCM.분산되어 있으며 4Mb 블록으로 대용량 파일을 관리하므로 언제든지 mem에 전체 파일을 로드해야 하는 제한이 없습니다.여기에서 DVCS에 대한 튜토리얼을 찾아보세요:http://codicesoftware.blogspot.com/2010/03/distributed-development-for-windows.html

BUP가 당신이 찾고 있는 것일 수도 있습니다.백업을 수행하기 위한 git 기능의 확장으로 구축되었지만 사실상 동일한 것입니다.파일을 청크로 나누고 롤링 해시를 사용하여 파일 콘텐츠를 주소 지정 가능하게 만들고 효율적인 저장을 수행합니다.

어떤 형태로든 버전 관리 시스템에서 바이너리 파일을 저장하는 것은 비효율적이라고 생각합니다.

더 나은 아이디어는 바이너리 개체를 참조하는 저장소에 메타데이터 텍스트 파일을 저장하는 것입니다.

배포해야 하나요?아마도 최신 분산 VCS에 대한 전복의 가장 큰 이점 중 하나는 바이너리 파일을 처리하는 탁월한 능력입니다.

이 경우 가장 좋은 해결책은 ZFS를 사용하는 것이라는 결론에 도달했습니다.

예 ZFS는 DVCS는 아니지만:

  • 새로운 FS 생성을 통해 저장소 공간을 할당할 수 있습니다.
  • 스냅샷을 생성하여 변경 사항을 추적할 수 있습니다.
  • 스냅샷(커밋)을 다른 ZFS 데이터 세트로 보낼 수 있습니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top