내 저장소를 해외에서 사용할 사용자의 다운로드 시간을 줄이길 기대하고 있습니다. 나는 이것이 너무 느리다는 것에 대한 불만을 접수했다.복제 할 때 git을 정확히 다운로드하고 크기를 줄이는 방법은 무엇입니까?
나는 모든 객체를 조사하고 가장 큰 객체를 찾기 위해 저장소에서 스크립트를 실행했습니다. 여기에 마지막 표는 다음과 같습니다
| size | pack | SHA | location |
|----------+----------+----------+----------------------------------------------|
| 7755956 | 7715996 | ecb5febf | media/promo/some.mp4 |
| 7082482 | 7019098 | 108b2909 | media/promo/some.webm |
| 5154689 | 5079200 | 1c20bd3b | media/promo/some.ogv |
| 3889885 | 3657066 | 2ad1b747 | AdModule/AdModule/media/other.mp4 |
| 3799591 | 3772833 | 7a901d41 | AdModule/AdModule/media/other.ogv |
| 2130845 | 2119014 | e034cb72 | media/promo/trailer.webm |
| 2130845 | 2119014 | e034cb72 | media/promo/trailer.webm |
| 2130845 | 2119014 | e034cb72 | media/promo/trailer.webm |
| 1912643 | 1806844 | cbd2562f | media/promo/trailer.mp4 |
| 1912643 | 1806844 | cbd2562f | media/promo/trailer.mp4 |
| 1912643 | 1806844 | cbd2562f | media/promo/trailer.mp4 |
| 1371459 | 1356916 | bbb2c932 | AdModule/AdModule/media/trailer.webm |
| 277981 | 80590 | 61375a0c | AdModule/AdModule/Scripts/jquery-1.9.1.js |
| 260304 | 47616 | f4427aed | AdModule/packages/jQuery.1.9.1/jquery-1.9.1- |
을 지금, 나는이 some.webm
등 some.mp4
느슨한 아마 수 개발의 과정에서 그들은 기존의 비디오를 필요로하지 않습니다 다른 비디오 및 기타 개발자에 의해 대체되었다 때문이다.
나는 git history/squashed 커밋을 다시 작성한 적이 없다. 그래서, 나는 그것을 두려워 해요 :)
git clone
실행할 때 발생하는 다운로드 시간과보고 된 크기를 보면 리포지토리에 저장된 것과 거의 같은 많은 데이터를받지 못합니다 (아마 그것의 10 분의 1).
그래서 내 질문에 : 큰 얼룩을 포함하는 커밋을 삭제하려는 시도가 다운로드 시간을 줄이는 것과 마찬가지로 나의 경우에 도움이 될까요? 그렇지 않은 경우 다운로드 시간을 줄이기 위해 무엇을 할 수 있습니까?
추신. 전체 SHA 합계를 가졌으나 가독성을 위해 표에서 잘립니다.
| size | file |
|----------+----------------------------------------------------------------------|
| 46802 | projects/take5/sdk/.git |
| 46680 | projects/take5/sdk/.git/objects |
| 42268 | projects/take5/sdk/.git/objects/pack |
| 20164 | projects/take5/sdk/.git/objects/pack/pack-594c78df5239b9e0dcd1014ac8 |
| 9712 | projects/take5/sdk/.git/objects/pack/pack-66fbcdd8ee5685720eb77a979a |
| 4176 | projects/take5/sdk/.git/objects/pack/pack-f6f37936674d8f016b58dce74e |
| 4176 | projects/take5/sdk/.git/objects/pack/pack-9f11f69dc046de80640de5d265 |
| 3960 | projects/take5/sdk/.git/objects/pack/pack-56985618be0c8c8596d12111fe |
| 551 | projects/take5/sdk/.git/objects/b9 |
: 여기
(이 REPO의 역사에 있어야 모든의 전체 크기보다 훨씬 적습니다 인) 실제로
.git
디렉토리에있는 파일의 크기를 보여줍니다 다른 테이블의
러닝 git gc
총 크기의 약 11Mb를 면도 할 수있었습니다.
감사합니다, 재미있는 읽기 (나는'git gc'에 대한 코멘트에서 배웠습니다 - 또한 좋았습니다). 그러나 나는 가능하다면 실제로 재 작성하는 것을 피하고 싶습니다. 대신 초기 복제 작업을 수행하는 데 걸리는 시간을 줄이고 싶습니다 (다른 개발자는 전체 저장소가 필요하지 않으며 전체 역사가 필요하지 않습니다). 복제가 당신에게 모든 repo를 가져 오지 않는다고 판단하여, 그 크기를 줄이는 다른 방법이 있을지도 모릅니다. 아마도 마스터 브랜치를 청소할 것입니까? 어쩌면 선택한 지점 만 복제하는 방법이 있을까요? 먼저 확인해보고 싶습니다. –
"복제로 인해 모든 repo를 가져올 수 없습니다." 다른 한편으로는 "(다른 개발자가 전체 저장소를 필요로하지 않고 전체 역사 - 단지 그 일부분 만) - 그렇다면 얕은 클론에 대해 배우고 싶어 할지도 모르지만 많은 이점을주지는 않습니다 (http://blogs.gnome.org/simos/2009/04/18/git-clones-vs-shallow-git-clones/) 정말로 기분을 되찾고 싶다면 정말 짜증이납니다. – mnagel
오 ... 이제 알았어! 음, 크기 보고서에서 한 자릿수 더 상상해 보았습니다 ... 음 :(네, 크기의 10 분의 1 정도라고 말한 곳에서 틀 렸습니다. 정확히 그 크기입니다. 그렇습니다. 아마도 내가 가질 것입니다. –