分支的创建与合并"/>
薛海丹:分支的创建与合并
1. 创建分支
命令:svn cope(cp)
请务必基于主干创建分支
$svn cp /
2. 分支合并到主干,保证工作拷贝是主干版本
命令:svn info
$svn info | grep URL
3. 检查需要合并的分支的历史,取分支创建时的版本
命令:svn log --stop-on-copy -q URL
$svn log --stop-on-copy -q /
------------------------------------------------------------------------
r16206 | huangcong | 2007-09-28 16:31:27 +0800 (Fri, 28 Sep 2007)
------------------------------------------------------------------------
r16205 | huangcong | 2007-09-28 16:30:55 +0800 (Fri, 28 Sep 2007)
------------------------------------------------------------------------
r16180 | bing.yanb | 2007-09-28 09:38:08 +0800 (Fri, 28 Sep 2007)
------------------------------------------------------------------------
r16179 | bing.yanb | 2007-09-28 09:37:57 +0800 (Fri, 28 Sep 2007)
------------------------------------------------------------------------
r16178 | shifeng.wangsf | 2007-09-28 09:26:21 +0800 (Fri, 28 Sep 2007)
------------------------------------------------------------------------
r16176 | shifeng.wangsf | 2007-09-28 09:14:16 +0800 (Fri, 28 Sep 2007)
------------------------------------------------------------------------
r16174 | jessica.zhangj | 2007-09-28 09:04:19 +0800 (Fri, 28 Sep 2007)
------------------------------------------------------------------------
4. 选取创建分支时的版本开始合并,起始选取16174,结束版本选最新HEAD
命令:svn merge
$svn merge -r 16174:HEAD / .
5. merge后的状态检查
命令:svn st
当出现C的状态时,就表明你的文件有冲突了,而你需要做的就是:沟通交流,手工解决!执行svn revert FILE_NAME!
使用merge时,合并的起始版本一般选取stop-on-copy的版本,即创建分支时的版本。请避免分支名变更或分支地址移动之类的操作,避免合并不完全! |
如果发现merge时提示Skipped
可能性及解决方案:
- 本地工作拷贝的某些需要合并的文件被删除
解决:svn up 将删除的文件更新回到工作拷贝 - 需要新增文件在工作拷贝中已经存在同名文件,但未纳入版本库
解决:svn st | grep ? | xargs -s 100000 rm -rf - 其他
请使用svn revert -R 将工作拷贝恢复到未修改的状态,再进行merge。***********************************************************
在合并之前使用svn st查看一下工作拷贝的状态,是比较严谨的作法!
***********************************************************
a、
本地工作拷贝的某些需要合并的文件被删除
$ svn st
! map
$ svn merge -r 16174:HEAD
Skipped missing target: 'map/AliZeusLeadsFilterkeyMapBuilder.java'
Skipped missing target: 'map/AliZeusLinkmanLogMapBuilder.java'
Skipped missing target: 'map/AliZeusLeadsLogMapBuilder.java'
Skipped missing target: 'map/AliZeusBlacklistMapBuilder.java'
Skipped missing target: 'map/AliZeusLeadsAppendMapBuilder.java'
Skipped missing target: 'map'b、
需要新增文件在工作拷贝中已经存在同名文件
$ svn st
? BaseAliZeusBlacklist.java
? AliZeusLeadsFilterkeyPeer.java
? AliZeusBlacklistPeer.java? AliZeusBlacklist.java
$ svn merge -r 16174:HEAD
Skipped 'BaseAliZeusBlacklist.java'
Skipped 'AliZeusLeadsFilterkeyPeer.java'
Skipped 'AliZeusBlacklistPeer.java'
Skipped 'AliZeusBlacklist.java'
<!-- <rdf:RDF xmlns:rdf="" xmlns:dc=".1/" xmlns:trackback="/"> <rdf:Description rdf:about=".action?pageId=14616371" dc:identifier=".action?pageId=14616371" dc:title="分支的创建与合并" trackback:ping="" /> </rdf:RDF> -->
更多推荐
薛海丹:分支的创建与合并
发布评论