1 | svn copy svn: //xx .com /repo/trunk svn: //xx .com /repo/branches/TRY-something -m 'make branches TRY-something' |
1 | svn switch svn: //xx .com /repo/branches/TRY-something |
当然,也可以再转到主干: svn switch svn://xx.com/repo/trunk
一旦分支上的开发结束,分支上的代码需要合并到主干。SVN中执行该操作需要在trunk的工作目录下进行。
1 2 | cd branch svn log --stop-on-copy |
1 2 3 4 5 | cd trunk svn -q --stop-on-copy 分支URL #这条命令会查询出自创建分支以后分支上的所有修改,最下面的那个版本号就是我们要找的版本号. #示例: svn log -q --stop-on-copy svn: //192 .168.1.177 /tags/beta_2009_12_24 |
1 2 3 4 5 6 7 8 9 10 11 12 | svn merge -r 分支版本号:HEAD 分支的URL #HEAD为当前主干上的最新版本 #示例: cd trunk svn merge -r 12:HEAD svn: //192 .168.1.177 /tags/beta_2009_12_24 cd trunk svn merge --reintegrate http: //svn_server/xxx_repository/branches/br_feature001 # 分支合并到主干中完成后应当删该分支,因为在SVN中该分支已经不能进行刷新也不能合并到主干。 # 合并版本并将合并后的结果应用到现有的分支上 svn -r 148:149 merge http: //svn_server/xxx_repository/trunk |
1 2 3 4 5 6 7 | svn st | grep ^C # 查找合并时的冲突文件,手工解决冲突 svn resolved filename # 告知svn冲突已解决 svn commit -m "" # 提示合并后的版本 svn: Aborting commit: '/path/resources/noc' remains in conflict $ svn revert resources /noc Reverted 'resources/noc' |
两个分支合并可以拆分为一下两步:
197从旧主干引出,186打完tag,表示是新主干
合并最新代码的意思是:将新主干与旧主干比对,并添加到197中。这样197既有自己的新增的代码,也同时有最新线上的代码。
1 2 3 | cd 197_Branch svn merge https: //xxx .com /tags/project/project_Old_BL https: //xxx .com /tags/project/project_New_BL svn ci -m 'merge 186 trunk' |
但是后来,其他人又向186提了代码,所以还需要将186分支(即打了tag后的186,打了tag前的186已是主干)合并至197中。
合并办法:找出186分支,比对与新主干之间的差别,并添加到197中。这样197就有最新的全部代码了。
1 2 3 | cd 197_Branch svn merge https: //xxx .com /tags/project/project_New_BL https: /xxx .com /project/branches/project/186_Branch svn ci -m 'merge 186 branch' |
1 2 3 4 5 6 7 | cd br_feature001 svn merge http: //svn_server/xxx_repository/trunk # 如果需要预览该刷新操作,可以使用svn mergeinfo命令,如: svn mergeinfo http: //svn_server/xxx_repository/trunk --show-revs eligible # 或使用`svn merge --dry-run`选项以获取更为详尽的信息。 |
产品开发已经基本完成,并且通过很严格的测试,这时候我们就想发布给客户使用,发布我们的1.0版本。
给当前主干打个标签,并且这个标签不再改动了,但是实际上标签和分支是一个意思,你可以在标签上继续做改动,但这不推荐。
1 2 3 4 5 6 7 | # 建立tags svn copy svn: //xx .com /repo/trunk svn: //xx .com /repo/tags/RB-1 .0 svn copy http: //svn_server/xxx_repository/trunk http: //svn_server/xxx_repository/tags/release-1 .0 -m "1.0 released" # 删除分支或tags svn rm http: //svn_server/xxx_repository/branches/br_feature001 svn rm http: //svn_server/xxx_repository/tags/release-1 .0 |
创建分支
svn cp -m "create branch" http://svn_server/xxx_repository/trunk http://svn_server/xxx_repository/branches/br_feature001
获得分支
svn co http://svn_server/xxx_repository/branches/br_feature001
合并主干上的最新代码到分支上
cd br_feature001 svn merge http://svn_server/xxx_repository/trunk
如果需要预览该刷新操作,可以使用svn mergeinfo命令,如
svn mergeinfo http://svn_server/xxx_repository/trunk --show-revs eligible
或使用svn merge –dry-run选项以获取更为详尽的信息。
分支合并到主干
一旦分支上的开发结束,分支上的代码需要合并到主干。SVN中执行该操作需要在trunk的工作目录下进行。命令如下:
cd trunk svn merge --reintegrate http://svn_server/xxx_repository/branches/br_feature001
分支合并到主干中完成后应当删该分支,因为在SVN中该分支已经不能进行刷新也不能合并到主干。
合并版本并将合并后的结果应用到现有的分支上
svn -r 148:149 merge http://svn_server/xxx_repository/trunk
联系客服