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.mp4some.webm等等,因为在开发过程中它们被其他视频取代,其他开发人员将永远不需要旧视频。

我从来没有重写过 git history / squashed commits。所以,我害怕这样做:)

当我查看执行时发生的下载时间和报告的大小时,我git clone收到的数据几乎没有存储库中存储的数据多(可能只有十分之一)。

所以,这是我的问题:我尝试删除包含大 blob 的提交是否会对我的情况有益,就像减少下载时间一样?如果没有,我可以做些什么来减少下载时间?

PS。我有完整的 SHA 总和,为了便于阅读,它们在表中被截断。


这是另一个表,它显示了.git目录中实际文件的大小(比这个 repo 历史中需要的所有内容的总大小要小得多):

|     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

您可以重写历史记录以使用过滤器分支排除该文件。阅读此完整教程: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 回答