首页 文章

Subversion将trunk合并到现有标签中

提问于
浏览
0

我目前在我的SVN-repository中进行了以下设置:

-Root
--ProjectA
----trunk
----tags
----branches
--ProjectB
----trunk
----tags
----branches
--ProjectPool
----projectA
----projectB

ProjectPool包含ProjectA和ProjectB的特定标记 .

现在,ProjectPool中的标签不时发生变化 . 这意味着ProjectA的特定主干版本已提交,我想从此修订版创建一个副本到Root / ProjectPool / projectA . 新标记应替换旧标记,但应该有可用的历史记录 .

它就像在我的电脑上有一个分支,我永远不会改变它,并不时将主干合并到它 . 但它应该完全在存储库中完成 . (无需登记/结账等)

这将允许我查看Root / ProjectPool / projectA的历史记录并查看它的变化 . 一种高级修订历史 .

UPDATE:
对不起,我忘了问一个明确的问题 - .-
在查看到目前为止已经到达的答案之后,我会说ProjectPool中的项目副本是原始项目的分支 . 然后我可以在我需要ProjectPool中的新版本的时候将它们从trunk合并 .
现在的问题是,如果有办法合并"online",则无需先创建工作副本 .

2 回答

  • 0

    现在ProjectPool中的标签会不时变化 .

    Tags 是里程碑,它们不应该改变 . 您应该在每个版本上创建一个新标记 .

    这意味着ProjectA的特定主干版本已提交,我想从此修订版创建一个副本到Root / ProjectPool / projectA . 新标记应替换旧标记,但应该有可用的历史记录 .

    你需要的是 branch ProjectA ProjectPool ,你可以重复地与 trunktrunk 合并 . 有这样的事情

    svn merge sourceURL1[@N] sourceURL2[@M] [WCPATH]
    

    参考:http://svnbook.red-bean.com/en/1.5/svn.ref.svn.c.merge.html

    这将允许我查看Root / ProjectPool / projectA的历史记录并查看其变化 . 一种高级修订历史 .

    看起来你已经完成了你的目录结构 . 如果可能的话,我建议你遵循这个结构 .

    -Root
        +--ProjectPool
            +--ProjectA
                +----trunk
                +----tags 
                +----branches
            +--ProjectB
                +----trunk
                +----tags
                +----branches
    

    您可以在 tag 中发布ProjectA和ProjectB . 更新的发展将在 trunk 继续 . 对于任何侧面开发或现场发布,请在branches目录中创建 branch . 分支完成后,将其合并回主干 . 这样, trunk 将始终反映所有修订和更改 . 而且,这更方便(和传统) .

    希望这可以帮助 .

  • 8

    你不知道你是否知道 merge 子命令,但这是你需要的那个:

    特别注意 --accept 参数;你需要它来获得自动冲突解决方案:

    C:\>svn help merge
    [...]
      --accept ARG             : specify automatic conflict resolution action
                                ('postpone', 'base', 'mine-conflict',
                                 'theirs-conflict', 'mine-full', 'theirs-full',
                                 'edit', 'launch')
    

    我还建议阅读Subversion书中的Branching and merging章节 .

相关问题