如何从Mercurial存储库中仅检索子目录?

时间:2010-08-10 19:16:48

标签: mercurial nant

我正在尝试使用Mercurial作为源存储库而不是VSS来销售我们的团队。在更新构建脚本的过程中,我遇到了一个试图从Hg存储库中检索文件的问题。

我们的构建使用NAnt自动化,目前适用于VSS的本地构建或构建(即,根据需要从VSS获取源代码)。我正在尝试更新它们以便与Mercurial一起使用。

基本上,当我使用单个文件时,我没有任何问题,因为我可以使用NAnt的'get'任务(在获得适当的修订哈希之后)来检索单个文件。

我遇到的问题是当我需要处理不在存储库根目录的文件的目录(和子目录)时。 我似乎无法弄清楚从存储库中检索/复制子目录到构建的“工作”目录的正确命令。我基本上花了整整一个下午试图弄清楚如何使用mercurial可执行文件执行此操作(因此我可以使用NAnt'exec'任务),并且基本上已经碰壁,所以我想我会尝试在这里发布。

有人可以确认这是否可行,并提供一些关于我如何能够做到这一点的建议?我意识到Mercurial跟踪文件而不是目录的变化,但似乎很奇怪我认为这不是开箱即用的(据我所知)。

如果这是不可能的,我看到的唯一解决方法是维护要使用的预期文件的NAnt文件集列表(呃!),或者将整个存储库克隆到临时目录,然后只是复制来自该源的文件需要(这对我来说就像一块泥泞)。

我意识到我可以简单地为我想要使用的目录创建另一个存储库,但我宁愿不去那条路,因为我认为这会增加我想要做的事情的复杂性大量的(我必须对我们构建的所有不同库应用这么多次。)。

2 个答案:

答案 0 :(得分:5)

Mercurial不会让您只获得存储库的一部分。你必须得到整棵树。它比svn更专注于整个回购。

答案 1 :(得分:1)

您可以尝试将存储库细分为多个存储库,并使用subrepos功能对其进行管理。然后,您可以单独拉出子目录。