我是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
的文件应用更改。
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
会返回我所做的所有更改。)
答案 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
是分支的本地工作目录。也就是说,首先你有源地址,然后是目的地,它必须是本地的。