当前描述的情况:二个以上的分支并行,当其中之一已经发布且合并主干后,需要将主干内容合并到未发布的分支时。
1. 拷贝主干到新的分支,也就是最终分支,例如:
svn cp trunk_branch_url new_dev_branch_url -m 'A copy from trunk by Y.C.J'
2. 转到工作目录,也就是要合并、测试分支的本地目录:cd oldworkdir
3. 将目录切换到新分支,然后会自动更新,实质上即使本地文件夹成为主干的拷贝:
svn sw new_dev_branch_url
4. 在本地目录(跟主干同步)执行:
svn log --stop-on-copy old_dev_branch_url查看原来修改的分支相对于主干做了哪些版本改动。
5. 假合并旧分支所作出的改动到本地工作文件夹,例如:
svn merge --dry-run -r188261:head old_dev_branch_url
6. 在上面假合并的过程中可以看是否有冲突:
svn merge --dry-run -r188261:head old_dev_branch_url |grep ^C
7. 合并老分支所作出的改动到本地文件夹:
svn merge -r188261:head old_dev_branch_url
8. 在上述分支合并的过程中如果有冲突则选择p,延迟处理,冲突。
9. 合并完毕可以参看下所有有冲突的文件:svn st|grep ^C。
10. 使用gedit 对有冲突的文件进行编辑、保存(使用gedit修改后的文件默认会有备份,可以用svn st查看,文件后缀为~)。
11. 手工解决冲突后可以通过svn resolved 相应文件来将其标记为冲突已解决。
12. 没有冲突,或者解决完冲突,则svn ci提交合并后的版本到新的开发分支。
13. 可以通过svn info查看当前分支版本号,然后通过svn log -r 版本号 -v,来查看提交了哪些文件。