[教学]如何在svn中从主干更新到分支

软件和网站开发以及相关技术探讨
回复
头像
bearscafe
帖子: 694
注册时间: 2007-05-05 23:11
送出感谢: 2 次
接收感谢: 0

[教学]如何在svn中从主干更新到分支

#1

帖子 bearscafe » 2008-05-18 6:12

当你需要从主干更新你分支,或反方向,或在两个分支间合并,就用得着merge了。下面以从主干更新分支为例简要介绍合并操作的步骤。要进一步了解,还是应该去阅读svn的文档。另外尽量不要用图形客户端,我开始用Eclipse的svn插件总是莫名其妙的merge fail。在shell里直接执行命令就好了。

最重要的是,一定要理解merge操作的含义:比较两个目录,然后应用结果到工作目录。也就是说,在命令中要提供三个目录的位置。
请用

代码: 全选

svn help merge
命令查看merge的语法,阅读完毕前请不要看下面的内容。

==========================================================================================================

最容易犯的一个错误是企图把你的分支和主干比较,千万不要这样做
,具体原因这里不分析。应该在主干的两个版本间进行比较。

步骤:
step1. check out你的分支到本地,并进入该目录。
step2. 确定待比较的起始版本号。

代码: 全选

svn log -v --stop-on-copy
从给出的信息中查看你的分支是从哪个版本建立的,假设你从版本号100建立了你的分支。
step3. 比较主干的版本100和最新主干的差别,将差别应用到工作目录。

代码: 全选

cd 工作目录
svn merge -r 100:HEAD 主干目录

step4. 解决冲突。当执行了第三步时,终端会给出反馈信息,每行信息都会以一个大写字母开头,如A代表添加,U代表修改等,注意C代表冲突。可以将第三步操作的输出管道至grep来查看哪些文件冲突了。用编辑器打开冲突的文件,你会发现文件里冲突的行已经被用<<<<<或=====等符号做了标记。怎样解决冲突呢?很简单,用文本编辑器手动修改。每解决一个冲突,就应该用

代码: 全选

svn resloved 冲突的文件
来告诉系统冲突已经解决了。
step5. 好了,在本地已经合并完毕,提交到服务器就行了。


如需转载,请注明作者及出处。
回复

回到 “软件/网站开发”