【问题标题】:Is it possible to peg a Mercurial subrepo to a specific revision (like svn:externals)?是否可以将 Mercurial 子存​​储库与特定版本挂钩(如 svn:externals)?
【发布时间】:2011-03-12 13:09:36
【问题描述】:

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

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

【问题讨论】:

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

标签: mercurial externals subrepos


【解决方案1】:

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

【讨论】:

  • 这行不通:如果我在 URL 末尾添加任何 #revision 部分,Mercurial 会抱怨 URL 组件不受支持。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-03
      • 2010-11-29
      • 2022-01-15
      • 2020-12-29
      • 1970-01-01
      • 1970-01-01
      • 2011-03-28
      相关资源
      最近更新 更多