SVN - 如何将在主干(trunk)上进行的更改应用到所有分支上

6

我是一个SVN的初学者。我的SVN目录结构如下:

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

在主目录下我有我的应用程序的主要版本。我为不同客户创建了两个分支,这些分支仅在某些文件中进行修改。当我发现一些核心错误时,我会在主目录下进行修复。例如,我修改了trunk目录中的file1.php。我想将更改应用于所有分支中名为file1.php的文件。
我有点困惑。在Subversion版本控制中,我找到了以下解释。
引用: Subversion的存储库具有特殊的设计。当您复制一个目录时,您不需要担心存储库变得非常庞大——Subversion实际上不会复制任何数据。相反,它创建一个指向现有树的新目录条目。
所以我认为,当我提交对trunk\file1.php文件的更改时,它将自动应用于其他branches目录中的file1.php文件,因为我没有对这些文件进行任何更改。
如何将来自主目录的更改应用于所有分支?我尝试使用svn merge,像这样:
svn merge -r 31:32 http://mysvnserver.com/project/branches/branch_1

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

3个回答

10

如果您想将来自主干的更改应用到branch_1中,则合并命令需要指定从哪里获取差异,并指定要应用合并的目标:

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
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"

0

尝试:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接