在我们的团队中,我们正在处理一个源代码存储在Mercurial版本库中的项目,随着时间的推移,版本库的大小也越来越大。因此,在网络上克隆版本库的速度变得越来越慢。
有没有任何技术可以用于修剪旧提交或减小版本库的大小,以使在慢速网络上进行克隆操作更快?
(我们使用TortoiseHg作为Mercurial客户端,但这(我猜)对解决此问题没有影响。)
在我们的团队中,我们正在处理一个源代码存储在Mercurial版本库中的项目,随着时间的推移,版本库的大小也越来越大。因此,在网络上克隆版本库的速度变得越来越慢。
有没有任何技术可以用于修剪旧提交或减小版本库的大小,以使在慢速网络上进行克隆操作更快?
(我们使用TortoiseHg作为Mercurial客户端,但这(我猜)对解决此问题没有影响。)
一种选择是使用 convert 扩展功能将您的存储库分解成一组更小的存储库。
假设你有一个包含多个项目(文件夹)的存储库。你决定如果每个项目(文件夹)都是单独的存储库会更好。你可以使用 convert 扩展功能来实现这一点,并保留变更历史记录。
hgweb
CGI脚本可以为任何版本提供zip或tar文件。存档是即时生成的。您只需要添加。[web]
allow_archive = gz, zip, bz2
将此配置添加到您的文件中。然后,您可以在类似以下URL的位置找到存档
http://server.com/repo/archive/rev.zip
用分支名称或变更集哈希值替换修订版本号,然后使用wget
、curl
或类似工具下载文件。
当历史记录与单个变更集的大小相比非常大时,这种策略才能够得到回报。
如果存储库包含经常更改的大型文件,则可能会出现这种情况。largefiles extension 可以是一种替代方法:它允许您仅下载所需的修订版文件。这样,您就可以避免下载大文件的历史记录,并节省大量带宽。
lfconvert
命令可以为您转换存储库。然后您可以尝试它,看看是否可以更快地克隆。
mvn release:prepare
用于每次发布都可以实现此操作。Cloudbees Jenkins 可以在每次构建时执行此操作... - Peter Koflerhttp://selenic.com/hg/archive/stable.zip
的快照。它只是一个包含该分支文件的zip文件 - 当然,您无法基于此文件进行新提交。但对于持续集成,它可以正常工作。 - Martin Geisler