我能用Mercurial模拟svn:externals吗?

61

我们正在考虑从SVN转换到Mercurial,但遇到了一个难题。

我们目前使用svn:externals将一组常用库自动拉入工作目录。我发现Mercurial中并没有类似的支持。

是否有自动在Mercurial中执行此操作的方法,或者我需要将其伪造成我的构建过程的一部分?


这个问题最好的hg扩展可能会有所帮助。我特别提出这个问题是为了解决这个svn:externals问题。[哪些是最好和必备的hg/mercurial扩展?] (https://dev59.com/0XI-5IYBdhLWcg3wZ3jC) - JJ Rohrer
4个回答

26

看起来,Forest扩展功能正在被集成到核心Mercurial中(截至1.3版):

https://www.mercurial-scm.org/wiki/Subrepository

目前标记为“实验性”,但也许会成为处理svn:external类型功能的途径,即从v1.4开始。


20

使用Mercurial本身没有很好的方法来解决这个问题。 其他地方提到的Forest Extension现在带来的问题比修复的问题还要多。 大多数人只是使用一个大型repo,并将所有组件都包含在repo中,然后让他们的构建脚本下载和使用第三方库-如果他们是Java-heads,则使用maven。

简短的回答是“在您的构建过程中伪造它”。

更新:

在Mercurial 1.3中添加了新的子存储库功能。 它类似于旧的forest extension,但始终使用全新的代码。

Subrepos 被认为是“最后的手段特性”。


嗨。我不太清楚“大多数人只是使用一个大型存储库,并将所有组件都包含在存储库中”的意思。这怎么可能呢?假设您有project1和project2,两者都使用component1和component2,那么如何使用Mercurial一次性“checkout” project1呢? - Nick Pierpoint
将project1、project2、component1和component2放入单个repo中,并一次性将它们全部检出。话虽如此,我正在编辑我的答案,以展示1.3版本中的新“嵌套存储库”功能。 - Ry4an Brase
1
嵌套存储库功能在1.5版中得到了进一步的改进,我相信。 - Peter Lillevold
是的,他们甚至已经从维基页面中删除了beta警告。 - Ry4an Brase

3

你尝试过Deps扩展吗?

它不是Mercurial的一部分,但似乎模仿了svn:externals功能。


0

5
注意森林扩展的问题。它没有得到更新,只适用于旧版本的Mercurial。它已经失宠于大多数Mercurial开发者,所以我不认为它将在未来继续被支持。 - Ry4an Brase

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接