Mercurial 是否有可能将易变次级回购与特定修订挂钩(如svn:externals)?
我正在将一组项目从Subversion迁移到Mercurial。这些项目目前使用svn:externals将代码从一个拉到另一个。我一直按照建议将外部代码指向一个特定的版本号,并根据需要手动更新它(这样,当我更新到主项目的过去版本时,我也会得到外部代码的过去版本)Mercurial 是否有可能将易变次级回购与特定修订挂钩(如svn:externals)?,mercurial,externals,subrepos,Mercurial,Externals,Subrepos,我正在将一组项目从Subversion迁移到Mercurial。这些项目目前使用svn:externals将代码从一个拉到另一个。我一直按照建议将外部代码指向一个特定的版本号,并根据需要手动更新它(这样,当我更新到主项目的过去版本时,我也会得到外部代码的过去版本) 在Mercurial中进行外部分析的方法似乎是使用子回购协议,但我看不到将其与特定修订版挂钩的方法-每当我更新主回购协议时,Hg似乎总是将子回购协议更新为最新修订版。对吗?有办法解决吗?Mercurial Subrepo似乎总是更新到
在Mercurial中进行外部分析的方法似乎是使用子回购协议,但我看不到将其与特定修订版挂钩的方法-每当我更新主回购协议时,Hg似乎总是将子回购协议更新为最新修订版。对吗?有办法解决吗?Mercurial Subrepo似乎总是更新到远程存储库的最新提示
我建议,如果您使用的是远程存储库的特定版本,并且只偶尔更新该版本,那么最好将该版本折叠到主存储库中。这意味着您不再依赖外部源进行签出。在
.hgsub
文件中,您可以使用http://[user[:pass]@]主机[:port]/[path][\revision]
(或local/filesystem/path[#revision]
)语法(有关更多示例,请参阅hg-help-url
)将子回购锚定到特定版本。对于该修订字符串,您甚至可以使用#branchname
或#tagname
,以便跟踪特定分支的尖端(例如稳定的
)或可移动的标记(例如:发布
),以便仅在更新远程子repo上的分支或标记时才能获得新版本。(从我上面的评论复制)
结果证明我错了。它不会更新为最新版本,而是更新为.hgsubstate文件中指定的版本,该文件受版本控制,并在每次提交时自动更新。因此,这实际上比SVN外部更容易,因为修订不必手动重新绑定;主回购协议的每个修订版都会自动与子回购协议的相应修订版关联。结果证明这不起作用:如果我在URL末尾添加任何修订部分,Mercurial会抱怨URL组件不受支持。结果证明我错了。它不会更新为最新版本,而是更新为.hgsubstate文件中指定的版本,该文件受版本控制,并在每次提交时自动更新。因此,这实际上比SVN外部更容易,因为修订不必手动重新绑定;主回购协议的每次修订都会自动与子回购协议的相应修订相关联。