2010-02-06 62 views
8

我想为我的工作项目评估Mercurial。但是我的大部分项目都非常依赖svn:externals-like的支持。我搜索了StackOverflow,并在Mercurial中搜索相应的支持。我发现的所有内容都是在Mercurial 1.3中添加的subrepo功能,但the page for this feature说:Mercurial 1.4.x中的subprepos功能是否可供生产使用?

subrepos是Mercurial 1.3的一个实验性功能。所以不要在关键任务仓库上这样做!

我不想使用不稳定的东西。

任何人都可以看到这个功能的真实状态,以及抛光/完成它的计划以及什么时候它将被称为“稳定”并准备好用于关键任务存储库的计划?

+0

我已经更新了wiki,以便更清楚地了解状态,我希望有所帮助。 – 2010-02-28 13:34:05

回答

6

#mercurial IRC频道中的单词是subrepos将继续像他们一样工作,并且支持将会增长。例如,目前'hg status'命令不是subrepo意识到的 - 它的工作原理,它只是没有递归,但在未来它会。但是,当前的行为,fileformats(.hgsub和.hgsubstate)只能以向后兼容的方式更改。

所以,现在就去指望它,并期待它变得更好。

P.S.从1.4.2开始,subrepos现在可以是颠覆性回购,所以你可以使用mercurial parent和svn kid。

+0

因此,这个功能没有明确的路线图?说,在1.6(或1.7)它应该几乎完整,或类似的? – bialix 2010-02-07 03:46:32

+3

现在完全够用了。一些工作流程将会稍微麻烦一点,但现在已经完成了。 – 2010-02-08 05:16:03

1

到目前为止,我已经在我的(轻量级)使用中获得了好运。它在两个地方派上用场:

  1. 使用单个hg pull命令备份不相关存储库的树。
  2. 将项目与特定版本的依赖关联在一起,以便单个hg clone获取可构建的源代码。这更接近典型的svn:externals用法。

这里有一对夫妇到目前为止,我已经看到了它的局限性:

  1. 在情况#1以上,你必须同时提交所有subrepos。这只是偶尔令人讨厌的,因为Mercurial(与任何DVCS一样)鼓励频繁提交—,因此大多数回购券不会处于未完成状态。
  2. 只有最基本的Mercurial命令是subrepo-aware:clone,push/pull,update/commit,也许还有其他几个。
  3. 扩展作者将需要时间根据存储库测试其扩展,并使用subrepos。

当Mercurial团队将该功能描述为“实验性”时,并不意味着它会突然决定清除所有数据。他们只是表示他们没有围绕所有的边界案例(如名称冲突)进行编码(例如,一位开发人员添加名为README的子文件夹,而另一位开发人员添加了名为README的文本文件)。

+0

我的用例在第一个列表中是#2。 – bialix 2010-02-07 04:04:02

相关问题