代码之家  ›  专栏  ›  技术社区  ›  Lukasz Lysik

SVN-如何将主干中所做的更改应用于所有分支

  •  7
  • Lukasz Lysik  · 技术社区  · 15 年前

    |-trunk
      |-file1.php
      |-file2.php
    |-branches
      |-branch_1
        |-file1.php
        |-file2.php
      |-branch_2
        |-file1.php
        |-file2.php
    

    在主干中,我有我的应用程序的主版本。我有两个不同客户的分支,它们只在一些文件中进行了修改。当我发现一些核心bug时,我会在主干中修复它。例如,我修改了 file1.php 在里面 trunk 目录我想对名为的文件应用更改 在所有的树枝上。

    我有点困惑。在 Version Control with Subversion 我找到了以下解释。

    Subversion的存储库有一个特殊的 设计当您复制目录时,您 不必担心这个问题 存储库增长巨大子版本 相反,它会创建一个新目录

    所以我认为当我在文件中提交更改时 trunk\file1.php 它将自动应用于其他应用程序 file1.php 文件,因为我没有对中的文件进行任何更改 branches

    如何将主干目录中的更改应用于所有分支? 我试着用 svn merge

    svn merge -r 31:32 http://mysvnserver.com/project/branches/branch_1
    

    但我没有做任何改变( svn diff -r 31:32 返回我所做的所有更改。)

    3 回复  |  直到 15 年前
        1
  •  10
  •   Ether    15 年前

    如果要将更改从trunk应用到branch_1,则merge命令需要指定获取差异的位置

    cd branch_1
    svn merge -r 31:32 http://mysvnserver.com/project/trunk .
    svn diff   # confirm that the only diff is your change to file1.php
    svn commit
    
        2
  •  2
  •   Michael Hackner    15 年前
    cd workingcopy
    svn merge -r 31:32 http://mysvnserver.com/project/trunk branches/branch_1
    svn merge -r 31:32 http://mysvnserver.com/project/trunk branches/branch_2
    svn commit -m "Merged r32 into branches"
    
        3
  •  0
  •   legoscia    15 年前

    尝试:

    svn merge -r 31:32 http://mysvnserver.com/project/trunk branch_1
    

    branch_1 是分支机构的本地工作目录。也就是说,首先是源地址,然后是目标地址,必须是本地地址。