svn 分支开发推荐方法
1、基本工作循环
检出工作副本
svn co repo/url/project/trunk
修改、编译、调试、验证
更新工作副本
svn up
解决冲突(交互解决/延迟解决/自动解决)
编译、验证
提交
svn ci -m "comment"
2、创建分支
直接从trunk远程拷贝
svn cp repo/url/project/trunk repo/url/project/branches/new_branch_name -m "comment"
3、保持分支同步
在分支工作副本执行
svn merge repo/url/project/trunk
解决冲突、编译、调试
提交
svn ci -m "comment"
4、合并回trunk
在分支工作副本再次同步trunk
在干净的trunk工作副本执行
svn merge --reintegrate repo/url/project/branches/your_branch_name
编译、验证
提交
svn ci -m "comment"
5、其他技巧
短url
svn 1.6之后可以使用^表示仓库根目录
仓库根目录可以使用svn info查看
svn cp ^/project/trunk ^/project/branches/new_branch_name -m"comment"
查看版本历史以及提交文件
svn log -v target/file
可以看到每次提交的具体文件(如果是新拷贝,还可以看到拷贝来源,比如新创建的分支就可以看到是从trunk的什么版本创建的等)
查看文件改动责任人
svn blame target/file
可以看到每行是谁提交的,在什么版本提交的。如果对该行代码有疑问,可以快速找到作者。
查看改目录的merge信息
svn mergeinfo ^/project/trunk [^/project/branches/]
可以看到trunk已经merge到分支的版本,参数反过来,看到的是branch已经合并到trunk的版本。
如果所在目录是第二个参数对应分支的工作副本,可以省略。
别人改动的大文件,自己没有任何改动,可以略过同步环节(减少运行diff的时间)
1、先本地拷贝过来
cp clean_trunk/target/big/file workcopy/target/big/file
2、标记为已合并
cd workcopy
svn merge --record-only -rleft:right ^/project/trunk/target/big/file target/big/file
3、合并其他小文件
svn merge -rleft:right ^/project/trunk
4、检查无误后提交
终极技巧
多使用svn help