我按照以下步骤将我的分支合并到主干。
查看trunk的副本:
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更新:
svn up
这会将您的主干副本更新为最新版本,并告诉您您的修订版本。记下这个数字(应该说“在YYYY修订版”,其中YYYY是你需要记住的第二个数字)。 现在我们可以执行SVN合并:
svn merge -rXXXX:YYYY svn + ssh:// server / path / to / branch / myBranch
合并后,如果我检查了结果,我的分支会被删除吗? 我需要保留我的分支(我需要在这个旧分支中继续开发)。
答案 0 :(得分:3)
我不确定你在做什么。您只需要检查要合并的分支。没有必要检查两个分支,切换,更改工作副本,做日志等等。这真的是一个非常简单的过程:
trunk
创建了一个分支(我们将其称为 copy 分支),但情况并非总是如此)。svn merge
命令。如果您要从原始分支合并到 copy 分支,则不要使用--reintegrate
开关。如果您要从 copy 分支合并到原始分支,则使用--reintegrate
开关。 这就是它的全部。您可以选择要合并的修订,也可以简单地允许合并所有更改。 Subversion合并非常好,Subversion在跟踪合并方面做得非常好。
我建议你阅读Subversion手册关于branching and merging的章节。
您是否需要删除合并后的分支?从版本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永远不会永久删除任何东西。即使我删除了分支,我也可以随时取回它。
答案 1 :(得分: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]。如果这样做,只有在第一次重新整合后在您的分支上进行的更改才会合并到主干。
答案 2 :(得分:0)
您可以随时从分支机构合并到主干,如果仍需要它,则无需删除它。然而,我会从主干到你的分支合并,以便你跟上主线的发展。同样这样做可以让你使用SVN的重新集成分支功能,这可以使你的branc更改为trunk更容易。