由于我的团队使用Mercurial存储库中的源处理给定项目,因此存储库的大小明显增加。因此,通过网络克隆存储库变得越来越慢。
是否有任何技术可用于修剪旧提交或减少repo的大小,以便在慢速网络上更快地完成克隆操作?
(我们使用TortoiseHg作为Mercurial客户端,但是(我猜)我不应该对这个问题的解决方案产生影响。)
答案 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
将修订号替换为您想要的变更集哈希的分支名称使用wget
,curl
或类似工具下载文件。
当历史记录与单个变更集的大小相比非常大时,此策略才会得到回报。
如果存储库包含经常更改的大文件,则可能出现这种情况。 largefiles extension可以替代它:它允许您只下载结帐修订所需的文件。这样您就可以避免下载大文件的历史记录并节省大量带宽。
答案 3 :(得分:2)
如果您的存储库中有大型二进制文件,有时可能会导致此类问题。对它们的任何更新往往会导致较大的差异,并使大小比正常情况更大幅度增加。
如果这适用于您,则可能值得查看随Mercurial 2.0分发的Large-files extension。我没有亲自使用它,听起来它仍然有一些胭脂边缘,但如果包含一个命令lfconvert
,它将为您转换回购。然后,您可以尝试查看它是否克隆得更快。