1

我按照以下步骤将我的分支合并到主干。

查看主干的副本:

svn co svn+ssh://server/path/to/trunk

查看您要合并的分支的副本:

svn co svn+ssh://server/path/to/branch/myBranch

将您当前的工作目录更改为“myBranch”找到修订版“myBranch”开始于:

svn log --stop-on-copy

这应该向您显示在分支被切断时所做的更改。记住这个数字(应该是 rXXXX,其中 XXXX 是修订号)。将当前工作目录更改为 trunk # 执行 SVN 更新:

快点

这会将您的主干副本更新到最新版本,并告诉您当前的版本。还要记下该数字(应该说“在修订 YYYY”,其中 YYYY 是您需要记住的第二个数字)。现在我们可以执行 SVN 合并:

svn merge -rXXXX:YYYY svn+ssh://server/path/to/branch/myBranch

合并后,如果我签入结果,我的分支是否应该被删除?我需要保留我的分支(我需要在这个旧分支中继续开发)。

4

3 回答 3

3

我不确定你在做什么。您只需要签出您要合并的分支。无需检查两个分支、进行切换、更改工作副本、记录日志等。这确实是一个相当简单的过程:

  • 您从原始分支(通常,但不一定总是如此)创建一个分支(我们将称为复制分支)。trunk
  • 根据您的开发技术,您可以在原始分支和副本分支上进行工作。
  • 当您想要进行合并时,您可以检出要合并到的分支的副本。毕竟,这是获得更改的分支。您希望在将这些合并的更改提交回存储库之前对其进行测试。
  • 要进行合并,您所要做的就是svn merge在工作副本上使用该命令。如果您从原始分支合并到复制分支,则不使用该--reintegrate开关。如果您要从复制分支合并到原始分支,则使用--reintegrate开关。

这里的所有都是它的。您可以选择要合并的修订,也可以简单地允许合并所有更改。Subversion 合并非常好,Subversion 在跟踪合并方面做得很好。

我建议你阅读 Subversion 手册中关于分支和合并的章节。

你需要删除你合并的分支吗?不会。从 1.5 版开始的 Subversion 不会复制已经发生的合并。

如果不再需要,您可以删除一个分支。例如,我创建了一个 Release 1.2 分支。我做了 1.2.1 版和 1.2.2 版。但是,我的用户都没有使用 1.2.x 版,我不再对其进行任何工作。我可能会删除它,因为当我这样做时svn ls http://server/svn/branches,我不会看到它。作为 Subversion,如果删除它让我感到紧张,我可以把它移开。我可以把它移到http://server/svn/branches/OBSOLETE/1.2. 这样,当我列出分支时它不会出现,但如果我决定我真的真的仍然需要它,它仍然存在。

顺便说一句,Subversion 从来没有真正永久删除任何东西。即使我删除了分支,我也总能把它找回来。

于 2012-11-11T05:29:17.533 回答
1

使用 SVN 1.8,您想要做的事情相当简单,并且明确支持同步合并和自动重新集成。以下是命令(下面的文档和链接将确认这一点):

cd path/to/branch/myBranch
svn up
svn merge ^/path/to/trunk  # usually just: svn merge ^/trunk
svn ci -m "Merged changes from trunk."

cd path/to/trunk
svn up
svn merge ^/path/to/branch/myBranch
svn ci -m "Reintegrated branch."

来自http://svnbook.red-bean.com/en/1.8/svn.branchmerge.basicmerging.html关于“重新整合一个分支”的说法是这样的:

如果您在将分支重新集成到主干后选择不删除分支,您可以继续从主干执行同步合并,然后再次重新集成分支[37]。如果这样做,则只有在第一次重新集成后对分支所做的更改才会合并到主干。

于 2014-04-07T18:31:00.470 回答
0

您可以随时从您的分支合并到主干,如果您仍然需要它,您不必删除它。但是,我会从主干合并到您的分支中,以便您也跟上主线开发。这样做还允许您使用 SVN 的重新集成分支功能,这应该会使从分支合并到主干的更改更容易一些。

于 2012-11-10T17:22:55.047 回答