Subversion:将更改从分支移动到另一个分支的最佳方式

时间:2008-12-17 08:58:42

标签: svn branch

我有两个分支:X和Y.我想用X(x1)中的等价物替换Y的子目录(y1)。

目前,我执行以下操作:将x1复制到Y,删除y1,将x1重命名(移动)到y1:

a) svn copy https://path/to/branches/X/x1 https://path/to/branches/Y/
b) svn delete https://path/to/branches/Y/y1
c) svn move https://path/to/branches/Y/x1 https://path/to/branches/Y/y1

我认为这很难看......

我怎么能以更聪明的方式做到这一点?

4 个答案:

答案 0 :(得分:3)

如果您真的想要替换目录,可以通过两个操作来完成:

svn delete https://path/to/branches/Y/y1
svn copy https://path/to/branches/X/x1 https://path/to/branches/Y/y1

如果Y / y1实际上已经是X / y1的旧版本,则不应该一直替换它,而是将自上次合并以来的所有更改合并到其中。

答案 1 :(得分:1)

为什么不只是两个步骤:

a) svn delete https://path/to/branches/Y/y1
b) svn copy https://path/to/branches/X/x1 https://path/to/branches/Y/y1

答案 2 :(得分:1)

将分支Y检查到一份新的工作副本,并将自己放在那里。

svn co https://path/to/branches/Y Y
cd Y

合并将Y / y1转换为X / x1所需的更改为Y / y1

svn merge https://path/to/branches/Y/y1 https://path/to/branches/X/x1 y1

提交此

svn commit -m "Y/y1 now has the same contents as X/x1"

如果y1与x1的名称不同(不清楚您的描述),请重命名:

svn mv y1 x1
svn commit -m "Y/y1 now named Y/x1"

但是,你知道你的工作流程是否要求你做这样的子树合并(或者更糟糕的是其他海报提倡的那种树木手术),你可能做错了。

答案 3 :(得分:1)

移动分支的简单方法:

svn mv url1 url2 -m "commit log msg"