正如您肯定发现的那样,复制到已经存在的目标目录是行不通的:
svn cp svn://my_project/vendor/1.1 svn://my_project/trunk
因为主干已经存在,所以你最终会得到:
svn://my_project/trunk/1.1
使用合并有一个不幸的属性,即在引入合并跟踪的 1.5 之前的版本中不保留供应商 1.1 标记的历史记录。你可能不在乎。在这种情况下,合并将是正确的解决方案:
svn co svn://my_project/trunk trunk-wc
svn merge svn://my_project/trunk svn://my_project/vendor/1.1 trunk-wc
阅读此合并的最佳方法是:首先确定与trunk
相同所需的更改vendor/1.1
,然后将这些更改应用于给定的工作副本(在这种情况下也是主干)。
我应该指出,这种合并将有效地吹走之前在树干中的任何东西。因此,如果您已经在主干上进行了本地(非供应商)修改,您将只想应用 1.1 和之前的供应商丢弃之间的更改:
svn co svn://my_project/trunk trunk-wc
svn merge svn://my_project/vendor/1.0 svn://my_prjoect/vendor/1.1 trunk-wc
如果trunk存在,但是是空的,你有两个选择:替换trunk,或者写一个小shell循环:
更换后备箱如下所示:
svn rm svn://my_project/trunk
svn cp svn://my_project/vendor/1.1 svn://my_project/trunk
利用外壳(bash):
svn co svn://my_project/trunk trunk
svn co svn://my_project/vendor/1.1 1.1
( 光盘 1.1
对于 x in * ; 做
svn cp $x ../trunk
完毕
)
svn ci 主干