4

我正在将一组项目从 Subversion 迁移到 Mercurial。这些项目目前使用 svn:externals 将代码从一个拉到另一个。我一直遵循将外部指向特定修订号并根据需要手动更新它的建议(这样当我更新到主项目的过去修订时,我也会获得外部的过去版本)。

在 Mercurial 中进行外部操作的方法似乎是使用子存储库,但我看不到将它们与特定修订版挂钩的方法 - 看起来 Hg 总是会在我更新主存储库时将子存储库更新为最新修订版。那是对的吗?有没有办法解决它?

4

3 回答 3

3

在您的.hgsub文件中,您可以使用http://[user[:pass]@]host[:port]/[path][#revision](or local/filesystem/path[#revision]) 语法(参见hg help urls更多示例)将子存储库锚定到特定修订版。对于该修订字符串,您甚至可以使用#branchnameor#tagname来跟踪特定分支(ex stable)或可移动标签(ex :)的尖端,release以便仅在远程子存储库上的分支或标签被更新时才能获得新版本。

于 2010-07-07T02:51:10.140 回答
1

(从我上面的评论中复制)

原来我错了。它不会更新到最新版本,它会更新到 .hgsubstate 文件中指定的版本,该文件受版本控制并在每次提交时自动更新。所以这实际上比 SVN 外部更容易,因为修订版不必手动重新挂钩;主存储库的每个修订版都自动与子存储库的相应修订版相关联。

于 2013-07-21T02:33:40.700 回答
0

Mercurial 子存​​储库似乎总是更新到远程存储库的最新提示。

我建议,如果您正在使用远程存储库的特定版本并且只是不经常更新该版本,那么最好将该修订版折叠到您的主存储库中。这意味着您不再依赖外部来源进行结帐。

于 2010-07-06T21:33:47.150 回答