`
- 浏览:
782637 次
- 性别:
- 来自:
上海
-
需要注意的是Branch和Trunk使用同一套版本号,也就是说无论在Branch还是Trunk的提交都会引起主版本号的增加。这是因为svn copy只支持同一个repository内的文件copy,并不支持跨repository的copy,所以新创建的Branch和Trunk都属于同一个repository。
参考SVN分支和合并的简单例子
http://www.panweizeng.com/svn-branching-merging.html
尽管svn没有作强制要求,但是一般svn版本库目录建议创建trunk、branches和tags三个目录。 在实际操作时,trunk主干版本要时刻保持干净,即随时可以基于这个版本进行修改并将应用部署上线。branches是分支目录,存放并行开发的项目代码,因为分支是主干的廉价拷贝(相当只是提交了一次主干版本,增加了一个版本号,并没有取出版本库作镜像拷贝),所以你可以放心建立很多分支版本。不过Subversion不支持跨版本库的拷贝,当使用svn copy时你只能在同一个版本库内操作。tags目录存放trunk某个的快照,比如说release-1.0即trunk处于1.0版本时的快照。
使用svn来作团队的代码管理,那么分支和合并将是非常常用的操作。下面是一个简单的示例。
1. 创建分支。这里假设你要负责一个叫theme的项目,分支号1.7.2。
#这里的localhost是svn服务器地址
svn copy -m "1.7.2 - theme" svn://localhost/www/trunk svn://localhost/www/branches/branch1.7.2-theme
svn co svn://localhost/www/branches/branch1.7.2-theme
2. 从trunk中merge到分支。忙了一个星期终于开发完了,但是开发期间trunk版本有过改动,部署上线前你需要合并trunk的代码。
#branch1.7.2-theme是分支目录,注意不可以进到分支子目录
cd branch1.7.2-theme
#前面的12972是开分支之前trunk的版本号,后面的12991是merge时trunk的版本号
svn merge -r 12972:12991 svn://localhost/www/trunk
如果有冲突选择p(postpone),merge完了之后使用svn st|grep ^C查看冲突文件,然后比对修改冲突文件。解决冲突后再check in ,信息写上执行的merge操作。
svn ci -m 'svn merge -r 12972:12991 svn://localhost/www/trunk'
3. 从分支merge到trunk。上线测试完毕,你很幸运,一切都如预期正常,这时就要将分支回归trunk,将trunk更新到最新。
#先从trunk checkout一份新鲜的代码,然后cd到该版本目录下
svn co svn://localhost/www/trunk
cd trunk
#12973是分支开始的版本号,13006是分支结束的版本号
svn merge -r 12973:13006 svn://localhost/www/branches/branch1.7.2-theme
如步骤2一样解决冲突,解决冲突后再check in,信息写上执行的merge操作。
svn ci -m "svn merge -r 12973:13006 svn://localhost/www/branches/branch1.7.2-theme"
相关的手册可以参阅svn文档。
SVN中Branch的创建与合并
http://www.cnblogs.com/huang0925/p/3254243.html
在使用源代码版本控制工具时,最佳实践是一直保持一个主干版本。但是为了应付实际开发中的各种情况,适时的开辟一些分支也是很有必要的。比如在持续开发新功能的同时,需要发布一个新版本,那么就需要从开发主干中建立一个用于发布的分支,在分支上进行bug fix,维护版本的稳定,并适时的将一些改动合并回主干。目前大红大紫的源代码版本控制工具git很受大家推崇,原因之一就是其在这方面的功能相当强大。其实老牌的SVN也是有这样的功能的,接下来就给大家讲解下。
Branch的创建
在SVN中主干代码一般是放置在Trunk目录下的,如果要新建Branch的话则放置在Branchs目录下。(注意这是一种约定,SVN并不强制你这样做)注意Branhs和Trunk目录要平级,不能有嵌套,要不会引起混乱。
myproject/
trunk/
branches/
tags/
创建一个Branch也相当简单,只需要一条命令即可。
svn copy http://example.com/repos/myproject/trunk http://example.com/repos/myproject/branches/releaseForAug -m 'create branch for release on August'
这条命令是指给myproject这个repo创建一个名为releaseForAug的branch,使用-m来加入描述。
之后你就可以通过 svn checkout http://example.com/repos/myproject/branches/releaseForAug来迁出你的Branch源文件,在上面进行修改和提交了。
其实SVN并没有Branch的内部概念。我们只是创建了一个repo的副本,并自己赋予这个副本作为Branch的意义,所以这与git中的Branch有很大不同。
需要注意的是Branch和Trunk使用同一套版本号,也就是说无论在Branch还是Trunk的提交都会引起主版本号的增加。这是因为svn copy只支持同一个repository内的文件copy,并不支持跨repository的copy,所以新创建的Branch和Trunk都属于同一个repository。
合并
既然要创建分支也需要合并分支。基本的合并也是蛮简单的。
假设现在Branch上fix了一系列的bug,现在我们想把针对Branch的改变同步到Trunk上,那么应该怎么做那?
保证当前Branch分支是clean的,也就是说使用svn status看不到任何的本地修改。
命令行下切换到Trunk目录中,使用 svn merge http://example.com/repos/myproject/branches/releaseForAug 来将Branch分支上的改动merge回Trunk下。
如果出现merge冲突则进行解决,然后执行svn ci -m 'description'来提交变动。
当然在merge你也可以指定Branch上那些版本变更可以合并到Trunk中。
svn merge http://example.com/repos/myproject/branches/releaseForAug -r150:HEAD
示例中是将Branch的从版本150到当前版本的所有改动都合并到Trunk中。
你也可以将Trunk中的某些更新合并到Branch中,还是同样的方法。
查看当前Branch和Trunk的合并情况
可以使用svn mergeinfo来查看merge情况。
查看当前Branch中已经有那些改动已经被合并到Trunk中:
# cd to trunk directory
svn mergeinfo http://example.com/repos/myproject/branches/releaseForAug
查看Branch中那些改动还未合并。
#cd to trunk directory
svn merginfo http://example.com/repos/myproject/branches/releaseForAug --show-revs eligible
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
SVN分支的意义: 简单说,分支就是用于区分开发版本与当前发布版本的。 1、 主干负责新功能的开发 2.、分支负责修正当前发布版本的bug(对于可以放入下个发布版本的改进性bug可以直接在主干上开发) 3.、...
SVN分支合并到主干 分支 主干 合并 冲突 英文
Eclipse svn创建分支、合并、切换讲解。 主要是合并操作。分支合并主干,已经冲突问题的解决。
SVN的目录结构解释与SVN创建分支、合并分支、切换分支的操作详解。
SVN分支与合并,从创建分支到合并分支,步骤图文详解
SVN 拉分支 合并 有详细的SVN拉分支及合并操作
二、 SVN分支简介 1、SVN仓库目录结构Repository 2、 结合eclipse创建分支 3、 结合eclipse创建标记tags 三、 合并主干和分支 1、 主干合并分支 2、 分支合并主干 3、 合并发生冲突 情况1:标记冲突,稍后处理。 ...
因此各开发成员需要建立自己的开发分支,并在此分支上进行开发工作,之后各开发成员把分支合并到主干上并形成较为稳定的版本,在后续的工作中各个成员重新从主干上建立新的分支,在此分支上继续开发,并其循环往复...
一、分支与合并的概念 二、SVN分支的意义 三、如何创建分支与合并分支
NULL 博文链接:https://panfuy.iteye.com/blog/1278898
描述了SVN的合并和同步策略,从分支方法、同步方法等方面进行了描述。
SVN分支及合并使用文档.doc
列举在开发过程中会出现的开发情况,规范在开发过程中分支的类型,何时分支何时合并
eclipse 整理svn分支 SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统
新手看看。高手绕道。主要是关于svn主干与分支互相合并的问题
在信息技术飞速发展的今天,为了加快开发的效率,提升各个部门的联动...日益更新的用户需求和不断升级的版本,如何才能做到灵活控制版本,今天我们请到了智博创享web端开发大牛卢建敏,他将分享使用SVN的心得和经验。
svn提交代码合并分支.txt
SVN使用的分支与合并,对大家应该有帮助的。
eclipse中利用svn创建、合并、切换分支
使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影响,最主要的原因是,自己对分支的目的和合并的...