.hgsub中的绝对路径有什么问题?

时间:2014-02-03 20:07:07

标签: mercurial mercurial-subrepos

mercurial documentation建议在.hgsub中使用普通的相对路径,并使用[subpaths]映射到绝对路径。我不完全理解这背后的原因。文档页面上的参数是绝对路径更可能发生变化。只要绝对路径发生变化,[subpaths]的解决方案也不会需要更改吗?

我能理解的一个原因(但在我的情况下不适用)是克隆的克隆只能使用[subpaths]将完整的原始路径重新映射到绝对路径。如果直接使用绝对路径,则克隆的克隆将从原始克隆推送/拉出而不是第一个克隆。这是否是在没​​有[subpaths]部分时使用绝对路径的唯一原因?

1 个答案:

答案 0 :(得分:2)

主要原因是因为有时路径会发生变化而你的.hgsub会成为历史的一部分。如果您的子版本从http://tinyco.com/hg/repo1移动到http://bigco.com/tinydivision/hg/repo1,您当然可以更新.hgsub文件,但旧版本可用于过去的版本。因此,当你hg update reallly_old_revision时,它会尝试与http:/tinyco.com交谈,后者在收购过程中受到了伤害。如果您将一条琐碎的路径保留为subrepo路径,那么您可以使用[subpaths]中的.hg/hgrc将其指向当前所在的位置。

通常也很方便地将子实体指向真实子区域的本地克隆,这样即使您无法推送到子区域(未经许可),也可以将其推向它。

通常,添加一个间接层会增加灵活性。