获取mercurial存储库提示副本的最佳方法是什么?

时间:2010-06-25 15:28:57

标签: mercurial release-management

我希望使用mercurial存储库执行等效的svn export REMOTE_URL。我最终想要的是远程URL上存储库的无版本快照,但没有将所有更改集克隆到我的本地计算机上。

此外,我希望能够在远程存储库中指定一个标记来从中选择。如果不是很明显,我正在构建一个发布管理工具,它从一个规范的mercurial存储库中提取来构建一个发布文件,而且它现在很慢,因为有些项目提交了大型的多版本二进制文件。

这可能吗?怎么会这样呢?

2 个答案:

答案 0 :(得分:3)

通常更容易(如果远程HG使用hgweb界面)只需访问浏览器中的repo并下载最新修订版的.tgz / .zip / .bz2。如果远程HG支持,您将看到链接。

如果您需要存储库,则需要进入当前tip的所有修订版才能使其完全正常运行。

hg clone有一些选项允许您获取存储库最多某个版本,但没有(我能找到)允许您获取 < / em>最新修订。您基本上要求的是回购的快照

修改:获取快照

hg clone http[s]://url.to.repo repo.hg
cd repo.hg
hg archive ../repo-snapshot
cd ..
rm -rf repo.hg

快照现在处于repo-snapshot中。

是的,这确实需要首先克隆repo,这就是为什么我建议看看远程hgweb是否支持任何特定版本的动态下载。如果是这样,你的问题就可以用curl或wget而不是HG来解决。

如果没有,那么让原始仓库“实时”很好,因为您可以稍后通过hg pull再次更新它,然后创建未来版本的另一个快照。这节省了克隆时必须从头开始,特别是对于有大量更改的大型存储库。

此外,以Linux为中心,但你得到了要点。当然,根据需要用所需的协议替换http [s]。

答案 1 :(得分:1)

是否有任何理由无法维护本地计算机上远程存储库的镜像(在后台通常需要更新),然后在本地计算机上运行发布管理工具hg archive必要的本地克隆?如果您关心的是用户响应,而不是消耗的总带宽/存储空间,则会将“慢速”部分偏移到您不会看到它的位置。

Tim Post指出,如果你确实有hgweb CGI接口可用,你可以将它配置为拉下压缩存档并解压缩它们(并且界面足够一致,你可以通过wget编写脚本),但如果你没有t,核心Mercurial没有很多工具可以帮助你,并且开发人员表示反对尝试将Mercurial变成一般的rsync类型客户端。

如果你不害怕玩非官方附加组件,你可以查看FTP Extension。但是,这将迫使您从服务器推送。