22

当我的团队使用 Mercurial 存储库中的源代码处理给定项目时,存储库的大小显然在增长。因此,通过网络克隆存储库变得越来越慢。

是否有任何技术可用于修剪较旧的提交或减小 repo 的大小以使克隆操作在慢速网络上更快?

(我们使用 TortoiseHg 作为 Mercurial 客户端,但(我猜)不应该对这个问题的解决方案产生影响。)

4

4 回答 4

15

一种选择是使用convert扩展将您的存储库分解为一组较小的存储库。

假设您有一个已演变为包含许多项目(文件夹)的存储库。你已经决定如果每个项目(文件夹)都是一个单独的存储库,你会更好。您可以使用convert扩展来做到这一点并保留您的变更集历史记录。

于 2011-04-15T23:12:20.767 回答
6

您可以使用计算机上远程 repo 的专用克隆作为克隆操作的缓存。所以你不需要每次都通过网络传输整个 repo,而只需要传输不存在的部分。

于 2011-04-18T11:22:29.747 回答
6

如果您只需要给定修订版中的文件,而不需要检查历史记录或进行新的提交,那么下载快照会更快。

普通的hgwebCGI 脚本可以为任何修订提供一个 zip 或 tar 文件。档案是即时生成的。你只需要添加

[web]
allow_archive = gz, zip, bz2

到你的配置文件。然后,您可以在 URL 下找到档案,例如

http://server.com/repo/archive/rev.zip

将修订号替换为您想要更改集散列的分支名称 使用 、 或类似工具下载wget文件curl

仅当历史记录与单个变更集的大小相比非常大时,此策略才会奏效。

如果存储库包含经常更改的大文件,就会出现这种情况。largefiles 扩展在这里可以作为替代:它允许您只下载您签出的修订版所需的文件。这样您就可以避免下载大文件的历史记录并节省大量带宽。

于 2011-12-30T00:23:56.277 回答
2

如果您的存储库中有大型二进制文件,有时可能会导致此类问题。对它们的任何更新往往会导致较大的差异,并使大小比正常情况更大幅度地增加。

如果这适用于您,可能值得查看随 Mercurial 2.0 分发的大文件扩展。我没有亲自使用过它,听起来它仍然有一些胭脂边缘,但是如果包含一个lfconvert将为您转换 repo 的命令。然后你可以试试看它是否克隆得更快。

于 2011-12-29T05:13:06.543 回答