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