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

时间:2009-10-29 17:43:56

标签: svn merge

我是SVN的初学者。我有这样的SVN目录结构:

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

在后台我有我的应用程序的主要版本。我有两个分支用于不同的客户端,仅在某些文件中有修改。当我发现一些核心错误时,我将它固定在trunk中。例如,我修改了file1.php目录中的trunk。我想对所有分支中名为file1.php的文件应用更改。

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

  

Subversion的存储库有一个特殊的   设计。当您复制目录时,您   不用担心   存储库增长巨大 - Subversion   实际上并不复制任何数据。   相反,它会创建一个新目录   指向现有树的条目。

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

如何将更改从trunk目录应用到所有分支?我试图像这样使用svn merge

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

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

3 个答案:

答案 0 :(得分:10)

如果要将更改从trunk应用于branch_1,则merge命令需要指定从获取diff 的位置,然后指定要将合并应用于的目标:

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

答案 1 :(得分:2)

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"

答案 2 :(得分:0)

尝试:

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

其中branch_1是分支的本地工作目录。也就是说,首先你有源地址,然后是目的地,它必须是本地的。