1

私のレポジトリを海外で使う人のために、ダウンロード時間を短縮できることを楽しみにしています。これが遅すぎるという苦情を受け取りました。

リポジトリでスクリプトを実行して、すべてのオブジェクトを調べ、どのオブジェクトが最大かを調べました。ファイナルテーブルは次のとおりです。

|     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.mp4開発の過程でそれらは他のビデオに置き換えられ、some.webm他の開発者は古いビデオを必要としないため、おそらく失う可能性があります。

私は一度も git の履歴を書き直したり、コミットを押しつぶしたりしたことはありません。だから、私はそれをするのが怖いです:)

実行時に発生するダウンロードの時間と報告されたサイズを見るとgit clone、リポジトリに保存されているほど多くのデータを受信して​​いません (おそらく、その 10 分の 1 にすぎません)。

それで、ここに私の質問があります:ダウンロード時間を短縮するなど、大きなブロブを含むコミットを削除しようとすると、私のケースにメリットがありますか? そうでない場合、ダウンロード時間を短縮するにはどうすればよいですか?

PS。完全な SHA の合計がありますが、読みやすいように表では切り捨てられています。


実際にディレクトリ内にあるファイルのサイズを示す別の表を次に示します.git(これは、このレポの履歴に必要なすべてのファイルの合計サイズよりもはるかに小さい値です)。

|     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                                   |

実行git gcすると、合計サイズの約 11 Mb を削ることができました。

4

1 に答える 1

0

filter-branch でそのファイルを除外するように履歴を書き換えることができます。完全なチュートリアルについては、これをお読みください: http://dalibornasevic.com/posts/2-permanently-remove-files-and-folders-from-a-git-repository

互換性のないリポジトリが作成され、既存のすべてのユーザーが新しいリポジトリを再クローンする必要があることに注意してください。

ps: はい、これによりダウンロード サイズが小さくなります。git はクローン作成時にすべてのファイルの完全な履歴をダウンロードします (そのため、節約するには filter-branch で完全に削除する必要があります)。履歴を保存するときに圧縮が行われるため、オブジェクト ファイルは実際のチェックアウトよりも小さいことが予想されますが (履歴があまりない場合)、1/10 は奇妙に思えます。うまく圧縮できません。

于 2013-07-16T08:49:40.957 に答える