减少Mercurial中的存储库大小

| 当我的团队使用Mercurial存储库中的源进行给定项目时,该存储库的规模显然正在增长。因此,通过网络克隆存储库的速度越来越慢。 是否有任何技术可用于修剪较旧的提交或减小存储库的大小,以使克隆操作在较慢的网络上更快地进行? (我们使用TortoiseHg作为Mercurial客户端,但是(我猜)不应该对解决此问题有所帮助。)     
已邀请:
一种选择是使用“ 0”扩展名将您的存储库分解为一组较小的存储库。   假设您的存储库已演变为包含许多项目(文件夹)。而且您已经决定,如果每个项目(文件夹)都是一个单独的存储库,情况会更好。您可以使用“ 0”扩展名来做到这一点,并保留您的变更集历史记录。     
您可以将计算机上远程仓库的专用克隆用作克隆操作的缓存。因此,您不需要每次都通过网络传输整个存储库,而只需传输尚未存在的部分。     
如果只需要给定版本中的文件,而无需检查历史记录或进行新的提交,则下载快照会更快。 普通的
hgweb
CGI脚本可以为任何修订提供zip或tar文件。存档是即时生成的。您只需要添加
[web]
allow_archive = gz, zip, bz2
到您的配置文件。然后,您可以在以下网址下找到档案
http://server.com/repo/archive/rev.zip
将修订版本号替换为要更改的分支名称,以散列所需的哈希值用
wget
curl
或类似工具下载文件。 与单个变更集的规模相比,历史记录非常大时,这种策略才能奏效。 如果存储库包含经常更改的大文件,则可能是这种情况。 largefiles扩展名可以在这里替代:它仅允许您下载签出的修订所需的文件。这样,您就可以避免下载大文件的历史记录并节省大量带宽。     
如果您的存储库中有很大的二进制文件,则有时可能会引起此类问题。对它们的任何更新都将导致较大的差异,并使大小比正常情况急剧增加。 如果这适用于您,那么可能值得一看Mercurial 2.0随附的大文件扩展名。我还没有亲自使用它,听起来好像它还有一些胭脂边缘,但是如果包含命令
lfconvert
,它将为您转换回购。然后,您可以尝试查看它是否可以更快地克隆。     

要回复问题请先登录注册