mercurial:自动拉动正在开发的外部库

时间:2013-10-04 12:35:07

标签: mercurial

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

我如何确保在project1中进行更改时,我还会提取module1(如果我的本地module1需要合并,则会发出警告(如果我需要合并)在此期间曾在module1工作过))?

1 个答案:

答案 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建议来提供有关需要合并的反馈。