0

我致力于独立开发project1的用途module1。它们都驻留在同一个 mercurial 服务器上(开发project1module1在本地完成,然后提交被推送到服务器。两者都是独立的、独立的存储库)。

我如何确保在拉取更改时project1,我也拉取module1(如果我的本地module1需要合并,则会发出警告(在此期间我本来会工作的情况下module1))?

4

1 回答 1

0

您可以将 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 建议,以提供有关需要合并的反馈。

于 2013-10-06T10:26:23.570 回答