【发布时间】:2011-12-17 01:26:54
【问题描述】:
我很好奇 Mercurial 是否可以做到这一点。我想在项目中有一个子存储库,它总是固定到手动指定的变更集,或者更好的是 - 标记。
基本上我想要实现的是在主仓库中拥有一个核心系统,然后在子仓库中拥有所有模块和组件,但我不希望这些子仓库指向小费,只指向那些的主要版本组件/模块(因此标签)。
【问题讨论】:
标签: mercurial mercurial-subrepos
我很好奇 Mercurial 是否可以做到这一点。我想在项目中有一个子存储库,它总是固定到手动指定的变更集,或者更好的是 - 标记。
基本上我想要实现的是在主仓库中拥有一个核心系统,然后在子仓库中拥有所有模块和组件,但我不希望这些子仓库指向小费,只指向那些的主要版本组件/模块(因此标签)。
【问题讨论】:
标签: mercurial mercurial-subrepos
子存储库完全按照您的意愿工作。
Mercurial 永远不会自动将子存储库更新到提示。它始终停留在您选择的变更集上。来自documentation:
Subrepos 不会自动跟踪其最新的变更集 来源。相反,它们会更新为对应的变更集 在顶级变更集中签出变更集。这是这样的 开发人员总能得到一组一致的兼容代码和 更新时的库。
要达到你想要的,你可以按照以下步骤:
echo subrepo = https://example.com/subrepo/repo/path > .hgsubhg add .hgsubhg clone https://example.com/subrepo/repo/path subrepohg -R subrepo update mytaghg commit这将创建一个包含指定存储库内容的子存储库目录,只要您不将手动更新为其他内容,该目录就会保留在mytag 标签上!
克隆您的存储库的每个人都将拥有与您相同的变更集上的子存储库(即mytag)。
仅供参考,子存储库更新到的变更集存储在主存储库根目录的 .hgsubstate 文件中。
【讨论】: