svn 合并分支代码

1, 查找到分支版本
方法一:cd branch
svn log --stop-on-copy
最后一个r11340就是创建分支时的reversion

方法二:cd trunk
命令:svn -q --stop-on-copy 分支URL,这条命令会查询出自创建分支以后分支上的所有修改,最下面的那个版本号就是我们要找的版本号.
示例:svn log -q --stop-on-copy svn://192.168.1.177/tags/beta_2009_12_24

2, 合并到主干
命令:svn -r 分支版本号:HEAD 分支的URL
解释:HEAD为当前主干上的最新版本
示例:
cd trunk
svn merge -r 12:HEAD svn://192.168.1.177/tags/beta_2009_12_24


解决冲突:
使用svn st | grep ^C 查找合并时的冲突文件,手工解决冲突
使用svn resolved filename 告知svn冲突已解决
使用svn commit -m "" 提示合并后的版本


(p)  postpone    – mark the conflict to be resolved later //让文件在更新完成之后保持冲突状态。
(df) diff-full   – show all changes made to merged file //使用标准区别格式显示base修订版本和冲突文件本身的区别。
(e)  edit        – change merged file in an editor //用你喜欢的编辑器打开冲突的文件,编辑器是环境变量EDITOR设置的。
(r)  resolved    – accept merged version of file //完成文件编辑之后,通知svn你已经解决了文件的冲突,它必须接受当前的内容—从本质上讲就是你已经“解决了”冲突。
(mf) mine-full   – accept my version of entire file (ignore their change//丢弃新从服务器接收的变更,并只使用你查看文件的本地修改。
(tf) theirs-full – accept their version of entire file (lose my changes)//丢弃你对查看文件的本地修改,只使用从服务器新接收的变更。
(l)  launch      – launch external tool to resolve conflict//启动一个外置程序来执行冲突解决,这需要一些预先的准备。
(h)  help        – show this list //显示所有在冲突解决时可能使用的命令。


svn: Aborting commit: '/path/resources/noc' remains in conflict

$ svn revert resources/noc


Reverted 'resources/noc' 


-手动解决:冲突发生时,通过和其他用户沟通之后,手动更新目标文件。然后执行svn resolved filename来解除冲突,最后提交。
-放弃自己的更新,使用别人的更新。使用最新获取的版本覆盖目标文件,执行svn resolved filename并提交。
-放弃自己的更新,使用svnrevert,然后提交。在这种方式下不需要使用svn resolved。
对于svn resolved命令需要非常小心,必须是非常确定冲突已经解决才能使用。否则,会导致Subversion以为冲突解决,而使代码库不正确。


SVN命令:http://www.blogjava.net/jasmine214--love/archive/2011/01/12/342839.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章