2012-08-30 2 views
0

Git에서 이전 버전의 파일을 효율적으로 읽을 수있는 방법이 있습니까? (나는 Git을 Content Management System을위한 데이터베이스로 사용하고 있으며 히스토리를 보여줄 필요가있다.)성능 효율적인 Git 히스토리

힘내는 파일의 전체 버전을 저장하지 않으므로 차이 만 저장하므로 이전 버전이 필요한 경우 - 디스크에서 읽을 수 없으므로 차이점을 사용하여 계산하도록 요청해야합니다.

GitHub이 어떻게 든 그 것처럼 보입니다. 예를 들어, previous version of file을 볼 수 있습니다. 모든 HTTP 요청에 대해 실제로 계산합니까 아니면 어떻게 든 최적화합니까?

답변

4

에라타 : git 항상 파일의 전체 버전을 저장합니다. 따라서 모든 개정판을 보는 것이 똑같이 효율적입니다.

이것은 diff (패치) 만 저장하는 다른 개정 시스템과 현저한 대조를 이룹니다. Cvs는 특히 많은 사용자가있는 대규모 저장소의 경우 이와 같은 이유로 깊은 기록 또는 비 트렁크 분기에 액세스 할 때 끔찍했습니다. 참고로


, 특정 버전에 액세스 특정 파일을 (샤/참조) 편리 사람 :

git show HEAD:full/path/to/file 

는 태그, 지점 또는 자식 샤 (긴 16 진수로 머리를 교체)

경로는 파일 시스템 루트가 아닌 git 저장소의베이스에 대한 전체 경로입니다. 나는 그것이 단지 몇 번 물었 기 때문에 이것에 대해서만 언급합니다. cd을 디렉토리에 넣을 수 없으며 전체 경로를 지정하지 않아도됩니다.


위키 백과 (진실하고 좋은 모든의 집) 저를 백업합니다 경우 위키 백과에서

Git stores each revision of a file as a unique blob object. The relationships between the blobs can be found through examining the tree and commit objects. Newly added objects are stored in their entirety using zlib compression.

는 가방, 또한 그것을 확인하는 git internals manual의주의 깊게 읽어 없습니다.

+0

이것은 완전히 사실이 아닙니다. repo를 패키징 할 때, git은 diffs 파일을 저장하지만, 걱정하지 않아도됩니다. :). – Chronial

관련 문제