8

我很好奇 Mercurial 是否可以做到这一点。我想在一个项目中有一个子存储库,它总是固定到手动指定的变更集,或者更好的是 - 标记。

基本上我想要实现的是在主仓库中有一个核心系统,然后是子仓库中的所有模块和组件,但我不希望这些子仓库指向小费,只指向这些组件/模块的主要版本(因此标签)。

4

1 回答 1

3

子存储库完全按照您的意愿工作。

Mercurial 永远不会自动将 subrepo 更新为小费。它始终停留在您选择的变更集上。从文档中:

Subrepos不会自动跟踪其源的最新变更集。相反,它们会更新为与在顶级变更集中签出的变更集相对应的变更集。这样一来,开发人员在更新时总能获得一组一致的兼容代码和库。

要实现您想要的,您可以按照以下步骤操作:

  1. echo subrepo = https://example.com/subrepo/repo/path > .hgsub
  2. hg add .hgsub
  3. hg clone https://example.com/subrepo/repo/path subrepo
  4. hg -R subrepo update mytag
  5. hg commit

这将创建一个包含指定存储库内容的子存储库目录,mytag只要您不手动更新到其他内容,该存储库就会保留在标签上!

克隆您的存储库的每个人都将拥有与您相同的变更集的子存储库(即mytag)。

仅供参考,子存储库更新到的变更集存储在.hgsubstate主存储库根目录的文件中。

于 2011-12-17T02:07:26.750 回答