Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial 是否有可能将易变次级回购与特定修订挂钩(如svn:externals)?_Mercurial_Externals_Subrepos - Fatal编程技术网

Mercurial 是否有可能将易变次级回购与特定修订挂钩(如svn:externals)?

Mercurial 是否有可能将易变次级回购与特定修订挂钩(如svn:externals)?,mercurial,externals,subrepos,Mercurial,Externals,Subrepos,我正在将一组项目从Subversion迁移到Mercurial。这些项目目前使用svn:externals将代码从一个拉到另一个。我一直按照建议将外部代码指向一个特定的版本号,并根据需要手动更新它(这样,当我更新到主项目的过去版本时,我也会得到外部代码的过去版本) 在Mercurial中进行外部分析的方法似乎是使用子回购协议,但我看不到将其与特定修订版挂钩的方法-每当我更新主回购协议时,Hg似乎总是将子回购协议更新为最新修订版。对吗?有办法解决吗?Mercurial Subrepo似乎总是更新到

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


在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外部更容易,因为修订不必手动重新绑定;主回购协议的每次修订都会自动与子回购协议的相应修订相关联。