我致力于独立开发project1
的用途module1
。它们都驻留在同一个 mercurial 服务器上(开发project1
并module1
在本地完成,然后提交被推送到服务器。两者都是独立的、独立的存储库)。
我如何确保在拉取更改时project1
,我也拉取module1
(如果我的本地module1
需要合并,则会发出警告(在此期间我本来会工作的情况下module1
))?
我致力于独立开发project1
的用途module1
。它们都驻留在同一个 mercurial 服务器上(开发project1
并module1
在本地完成,然后提交被推送到服务器。两者都是独立的、独立的存储库)。
我如何确保在拉取更改时project1
,我也拉取module1
(如果我的本地module1
需要合并,则会发出警告(在此期间我本来会工作的情况下module1
))?
您可以将 module1 作为子存储库附加到 project1,但这不会完全按照您想要的方式工作。这允许您将 module1 开发为自己的 repo,但是在开发 project1 时,每个变更集将在提交时在子 repo 中标记 module1 的变更集。
https://www.mercurial-scm.org/wiki/Subrepository
http://mercurial.aragost.com/kick-start/en/subrepositories/
因此,这并不能保证您在拉取 project1 时拥有最新版本的 module1,但可以保证您至少拥有与特定版本 project1 一起使用的 module1 版本。
或者,由于默认情况下 mercurial 不支持您确切要求的内容,您可以为 pull 命令编写自己的挂钩(挂钩是一个脚本,当您执行挂钩的操作时会触发该脚本),它读取 . hgsub 命令并对所有子存储库进行递归拉取和更新。
https://www.mercurial-scm.org/wiki/Hook
您可能可以在没有 subrepos 的情况下完成此操作,但在这种情况下,我建议您将一些文件提交给您的钩子可以读取的 project1,这会告诉它要拉什么 repos。您应该能够使用 pull 的正常输出,或者可能运行 hg 建议,以提供有关需要合并的反馈。