2010-06-25 55 views
3

我想用一个mercurial仓库来做svn export REMOTE_URL的等价物。最后我想要的是在远程URL上存储库的未版本化快照,但不会将所有更改集都克隆到本地计算机上。获得mercurial存储库的提示副本的最佳方法是什么?

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

这可能吗?一个人会怎么做呢?

回答

3

它通常更容易(如果远程HG使用hgweb接口)只需访问在浏览器中回购和下载最新修订的.tgz的/ .ZIP /操作.bz2。如果远程HG支持此功能,您将看到链接。

如果你想存储库中,你需要所有的走进了当前tip修订的它是在所有的功能。

有选项hg clone,让您取一个仓库高达某个版本,但没有(我能找到),让您得到只是最新修订。你实质上要求的是回购的快照

编辑:为了得到一个快照

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

现在的快照是在回购快照。

是的,这的确需要先克隆回购,这就是为什么我建议看如果远程hgweb支持任何特定版本的即时下载。如果是这样,你的问题可以用curl或wget代替HG来解决。

如果不是,它可以让原始回购“活着”,因为您可以通过hg pull稍后再次更新它,然后创建未来版本的另一个快照。这样可以避免在克隆时从头开始,特别是对于有大量变化的大型仓库。

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

+0

这正是我想要的;远程存储库的快照,位于特定的标记/修订散列处。我不希望存储库本身;这是永远不会在发布包:) – 2010-06-25 16:02:19

+0

@Chris R - 请参阅我的编辑。理想情况下,远程hgweb支持即时下载任何修订版本的快照。否则......你必须做一个一次性克隆来创建一个。 – 2010-06-25 16:09:19

+0

我看见他们;我特别希望避免本地克隆,因此这是一个非首发。 http档案下载似乎是最有可能的。 – 2010-06-25 16:48:23

1

是否有任何理由不能在本地计算机上维护远程存储库的镜像(在后台进行更新(无论您希望如何更新),然后让本地计算机上的发布管理工具在本地运行hg archive根据需要克隆?如果您担心的是用户响应能力,而不是总带宽/存储消耗,则会将“慢”部分抵消到您不会看到的部分。

Tim Post指出,如果你确实有可用的hgweb CGI接口,你可以配置它来压缩压缩档案并解压它们(并且接口足够一致以至于你可以通过wget编写脚本),但是如果你不喜欢核心Mercurial没有很多工具可以帮助你,而且开发人员反对试图将Mercurial变成一个普通的rsync类型的客户端。

如果你不怕与非官方的附加组件玩,你可以有一个看看FTP Extension。但是,这会迫使你从服务器上推送。

+0

hgweb可能是门票,但我很确定我们计划使用ssh访问模式。尽管如此,这可能是最好的办法。谢谢,我得看看它是否可以工作。 – 2010-06-25 16:03:11

相关问题