1

设置 SVN 时,我们没有从主干创建分支,而是简单地在根结构中创建了一个新文件夹:

/branches/dev/  
/trunk

并为此努力。当然,现在不可能将 dev 合并到主干中,因为 SVN 看不到分层连接。我正在尝试找到使其正确的最佳方法,以便我们拥有代码的开发分支与主干相关,并且我们将来可以进行正常的合并。

我发现了两种方法——其中一种只是将代码从 dev 复制到主干,提交主干,然后进行适当的分支检出。我对这种方法的问题是我们会丢失所有的修订历史,因为真正的开发分支会重新开始。

其他方法是使用 --ignore-hierarchy。这似乎迫使东西进入主干,我不确定这种方法的缺点。

基本上,当我们自己物理创建开发文件夹而不是分支主干时,从一开始就解决问题的最佳方法是什么?

4

1 回答 1

1

为什么不能将该分支合并到主干中?

有不同的方法可以在 subversion(以及其他所有 rcs)中维护分支等。您直观地设置的是传统方式:您创建文件夹并复制分支/主干/标签之间的文件夹修订之间的差异。这行得通,因为 svn 层次结构中的节点只不过是一个文件夹。svn中没有什么特别的魔法。

Subversion 只不过是一个带有附加时间轴的文件系统。

因此,您所要做的就是将您提交给分支节点的更改(修订)合并到主干中:

svn merge -r <start>:<current> https://<server>/<repo>/<path>/branches/dev <trunk-checkout>

(也就是说:如果您的分支最初包含主干的一些修订。但我认为它确实如此,因为您没有另外说。如果它完全独立于主干,那么为什么它被称为分支?而且:更重要的是:为什么你想把它合并到主干吗?)


2013-01-26 更新:

讨论表明,这种情况涉及一个空主干,从未填充也从未使用过,因此没有任何东西可以合并分支中的任何更改。取而代之的是,整个开发项目起源于一个被称为“分支”的东西,它实际上是这个项目的唯一“主干”。

所以解决方案看起来像这样:在这种情况下,只需将当前称为分支的内容移动为项目主干,并以新的(更合适的)名称继续开发。开发要么在新的结帐内完成,要么通过重新定位现有的结帐来完成。从现在开始,分支应该按照下面描述的方式使用。所以更正不合适的名称并调整当前情况,使其与项目的典型措辞相匹配:

  • 主干是完成或巩固“主要”开发线的地方
  • 主干是分支内部的发展被重新合并到的地方
  • 可以通过在给定时间点分叉主干来创建多个分支
    • 在这些分支内部,复杂的开发可以与主干的其他更改一起实施,而不会干扰
    • 当那些更复杂的开发完成并且新功能或架构变得稳定(“准备好”)时,可以将来自分支的更改合并回主干
于 2013-01-20T10:20:36.177 回答