如何将功能分支重新集成到SVN中的中继副本?

时间:2011-03-11 13:39:04

标签: svn

使用功能分支的传统方式如下面的ascci图像所示。

       FB o-------------------o
         /                     \
        /copy                   \ reintegrate 
       /                         \     
TRUNK-o---------------------------o---   

实际上,我的功能分支的重新集成需要大量测试,并且还应该在连续构建服务器上工作。这就是为什么我需要分两步重新融入后备箱的原因。此方案如下所示:

enter code here
       FB    o--------------------o
            /                      \ reintegrate (problems here :-( )
           /                        \
          /               FB2    o---o----------------o
         /copy                  /                      \
        /                 copy /                        \ reintegrate
       /                      /                          \
TRUNK-o----------------------o----------------------------o--  

不幸的是,我无法将功能分支重新集成到主干的副本中。 SVN表示缺少主干副本文件的根路径。在进一步分析错误之前,我想知道一般情况下是否可以在分支和主干的副本之间进行重新集成。

UPDATE 我发现了如何将功能分支重新集成到主干的副本中:

       FB    o--------------------o
            /                      \ (2)reintegrate into the local trunk copy
           /                        \
          /                          \        FB2    o----o---------------o
         /copy                        \             /     ^                \
        /                              \   (3)copy /      |                 \ reintegrate 
       /                                \         /       |                  v
TRUNK-o----------------------------o-----\-------o--------|-------------------o--  
                                    \     |               |
                            (1)checkout  /                |(4) svn switch to FB                            
                                      v v                 |    + svn commit
                                      []-------------------
                             fresh checked out 
                             local working copy

2 个答案:

答案 0 :(得分:2)

您将需要使用合并,具有良好的修订号范围。 (我认为只重新集成在实际的行李箱上)

svn book对于合并和分支主题可能对您有用。

答案 1 :(得分:1)

听起来你需要的是SVN merge

您需要做的基本上是将下面A点和B点之间的所有差异合并到FB2分支中。(

您可以运行以下命令(假设您的工作副本位于FB2分支中):

svn merge -rA:B <url_of_FB_branch> .

其中AB是下图中点AB的修订号:

     FB    A o--------------------o B
            /                      \ reintegrate (problems here :-( )
           /                        \
          /               FB2    o---o----------------o
         /copy                  /                      \
        /                 copy /                        \ reintegrate
       /                      /                          \
TRUNK-o----------------------o----------------------------o--

获取A的修订号:

svn log --stop-on-copy <url_of_FB_branch>

并从列表中获取最小的修订号(即最早的)

对于B,它更容易。假设您要从FB获取最新更改,只需使用HEAD关键字作为B的修订号

相关问题