将第三方库保留在Mercurial项目下:是否存在子库?

时间:2010-06-13 09:41:54

标签: mercurial subrepos

我们正在开发一个使用Mercurial版本的闭源项目。我们在项目中使用了两个库:

  • 其中一个图书馆正由第三方开发。他们使用的是git,我们通常只需在一周内从他们的仓库中取出一次即可获得最新的更改。

  • 另一个图书馆正由我们自己开发,并且正在积极开发中。它必须存在于自己的公共mercurial存储库中,因为它是根据LGPL许可的。 (它是第三方LGPL组件的一个分支,移植到我们的平台上)

所以我的问题是:我应该如何组织来源以确保:

  1. 我们团队的开发人员应该能够通过一个“克隆”命令获取所有源(主项目+库)

  2. 我们应该能够轻松地从库中获取最新的更改,即使其中一个由git管理

  3. 我们应该使用mercurial sub-repos功能,用hg-git来访问git下的库吗? TortoiseHg和BitBucket是否得到了很好的支持? (专业人士:易于拉动库变更/缺点:它运作良好吗?)

    或者我们应该只在项目下保留库的快照? (因此,当库中有新的上游变化时,我们将它们拉到一个单独的位置,然后将整个源复制到我们的项目中?(专业:将工作/缺点:痛苦的屁股,特别是对于库来说由我们自己开发,每天都有很多变化)

1 个答案:

答案 0 :(得分:1)

是的,使用带有hg-git的subrepo。它简单,支持且有效。你的.hgsubstate文件将包含指向subrepos快照的指针,并且该文件是受控制的,因此在任何时候你都可以回答这个问题:这个库X的版本是什么版本。这是件好事。

或者,您可以根据自己的语言使用依赖管理器(如常春藤或maven),但如果可以避免,则不要将其库包含在您的仓库中。指向代码版本的指针更好,依赖管理器或子目录是最干净的方法。