mercurial documentation建议在.hgsub
中使用普通的相对路径,并使用[subpaths]
映射到绝对路径。我不完全理解这背后的原因。文档页面上的参数是绝对路径更可能发生变化。只要绝对路径发生变化,[subpaths]
的解决方案也不会需要更改吗?
我能理解的一个原因(但在我的情况下不适用)是克隆的克隆只能使用[subpaths]
将完整的原始路径重新映射到绝对路径。如果直接使用绝对路径,则克隆的克隆将从原始克隆推送/拉出而不是第一个克隆。这是否是在没有[subpaths]
部分时使用绝对路径的唯一原因?
答案 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
将其指向当前所在的位置。
通常也很方便地将子实体指向真实子区域的本地克隆,这样即使您无法推送到子区域(未经许可),也可以将其推向它。
通常,添加一个间接层会增加灵活性。