是否可以将Mercurial subrepo与特定修订版本挂钩(如svn:externals)?

时间:2010-07-06 21:30:30

标签: mercurial externals subrepos

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

在Mercurial中进行外部操作的方法似乎是使用subrepos,但我没有看到将它们固定到特定修订版的方法 - 看起来每当我更新主要版本时,Hg将始终将子版本更新为最新版本回购。那是对的吗?有没有办法解决它?

3 个答案:

答案 0 :(得分:3)

.hgsub文件中,您可以使用http://[user[:pass]@]host[:port]/[path][#revision](或local/filesystem/path[#revision])语法(有关更多示例,请参阅hg help urls)将subrepo锚定到特定修订版。对于该修订字符串,您甚至可以使用#branchname#tagname,以便跟踪特定分支(ex stable)或可移动代码(例如release)的提示这样,只有在更新远程子报道上的分支或标记时才能获得新版本。

答案 1 :(得分:1)

(从我上面的评论复制)

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

答案 2 :(得分:0)

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

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

相关问题