减少Mercurial中的存储库大小

时间:2011-04-15 23:07:49

标签: mercurial continuous-integration tortoisehg filesize maven-release-plugin

由于我的团队使用Mercurial存储库中的源处理给定项目,因此存储库的大小明显增加。因此,通过网络克隆存储库变得越来越慢。

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

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

4 个答案:

答案 0 :(得分:14)

一个选项是use the convert extension to decompose your repository到一组较小的存储库。

  

假设您有一个已经发展为包含许多项目(文件夹)的存储库。如果每个项目(文件夹)都是一个单独的存储库,那么您已经决定要做得更好。您可以使用convert扩展程序执行此操作并保留更改集历史记录。

答案 1 :(得分:6)

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

答案 2 :(得分:6)

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

正常的hgweb CGI脚本can provide a zip or tar file for any revision。档案是即时生成的。您只需要添加

[web]
allow_archive = gz, zip, bz2

到你的配置文件。然后,您可以在

等网址下找到存档
http://server.com/repo/archive/rev.zip

将修订号替换为您想要的变更集哈希的分支名称使用wgetcurl或类似工具下载文件。

当历史记录与单个变更集的大小相比非常大时,此策略才会得到回报。

如果存储库包含经常更改的大文件,则可能出现这种情况。 largefiles extension可以替代它:它允许您只下载结帐修订所需的文件。这样您就可以避免下载大文件的历史记录并节省大量带宽。

答案 3 :(得分:2)

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

如果这适用于您,则可能值得查看随Mercurial 2.0分发的Large-files extension。我没有亲自使用它,听起来它仍然有一些胭脂边缘,但如果包含一个命令lfconvert,它将为您转换回购。然后,您可以尝试查看它是否克隆得更快。