2

mercurial 文档建议使用简单的相对路径并.hgsub用于[subpaths]映射到绝对路径。我不完全理解这背后的原因。文档页面上的论点是绝对路径更有可能改变。每当绝对路径更改时,解决方案是否[subpaths]也需要更改?

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

4

1 回答 1

2

主要原因是因为有时路径会发生变化,而您的 .hgsub 是历史的一部分。如果您的 subrepo 从http://tinyco.com/hg/repo1移动到http://bigco.com/tinydivision/hg/repo1您当然可以更新您的 .hgsub 文件,但旧版本已用于过去的修订。因此,当您这样做时,hg update reallly_old_revision它会尝试与 http://tinyco.com 交谈,该网站在收购过程中被削弱了。如果您保留一条简单的路径作为子存储库路径,那么您可以[subpaths]在您的路径中使用.hg/hgrc它来指向它当前所在的位置。

将子存储库指向您自己的真实子存储库的本地克隆通常也很方便,这样即使您无法推送到子存储库(无权限),您也可以推送到它。

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

于 2014-02-04T01:27:27.350 回答