首页 > 代码库 > svn merge

svn merge

svn常用命令相信大家都非常熟悉,但是merge这个命令很多人却并不常用到,这次由于工作关系,特地学习了一下。

由于开发环境是mac,没有像TortoiseSVN这么好用的svn,mac大部分的svn客户端个人觉得都不是特别好用,所以选择用svn命令行。

svn merge的思想其实是diff and apply,而不是合并。

svn merge --help可以看到这个命令的用法

 

 

可以看到有4种用法,最后的参数都是[target_wcpath],wcpath=working copy path,也就是apply的应用对象

而前面的参数则是得到diff用的,所以结果是前面得出的diff,apply到wcpath,所以4种用法的区别就在于得到diff的途径不同。

(注:下面所说的SOURCE都是只svn的url,而不是本地目录,只有wcpath才是本地的checkout版本)

1.

This form is called a ‘sync‘ (or ‘catch-up‘) merge:

svn merge SOURCE[@REV] [TARGET_WCPATH]

称为同步merge,相当于把SOURCE分支的从REV版本到lastchange版本的diff同步到wcpath。

2.

This form is called a ‘cherry-pick‘ merge:

svn merge [-c M[,N...] | -r N:M ...] SOURCE[@REV] [TARGET_WCPATH]

‘cherry-pick‘ merge我们可以称之为“选择合并”

-c,-r两个参数可以同时存在也可以只选其一:

-r,表示两个版本之间的diff,-r N:M,表示从版本N到M得diff

-c,表示单个版本的diff,-c 50 相当于 -r 49:50

通过参数得到的diff,应用到wcpath

3.

This form is called a ‘reintegrate merge‘:

svn merge --reintegrate SOURCE[@REV] [TARGET_WCPATH]

重建选择,从trunk迁出一个branch,开发完成后,要合并回trunk中。

妈蛋,写到一半发现之前merge的代码有问题,悲剧啊!!!再去学学