SVN中Branch的创建与合并

在使用源代码版本控制工具时,最佳实践是一直保持一个主干版本。但是为了应付实际开发中的各种情况,适时的开辟一些分支也是很有必要的。比如在持续开发新功能的同时,需要发布一个新版本,那么就需要从开发主干中建立一个用于发布的分支,在分支上进行bug fix,维护版本的稳定,并适时的将一些改动合并回主干。目前大红大紫的源代码版本控制工具git很受大家推崇,原因之一就是其在这方面的功能相当强大。其实老牌的SVN也是有这样的功能的,接下来就给大家讲解下。
Branch的创建
在SVN中主干代码一般是放置在Trunk目录下的,如果要新建Branch的话则放置在Branchs目录下。(注意这是一种约定,SVN并不强制你这样做)注意Branhs和Trunk目录要平级,不能有嵌套,要不会引起混乱。
1 |
|
创建一个Branch也相当简单,只需要一条命令即可。
1 |
|
这条命令是指给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中。
1 |
|
示例中是将Branch的从版本150到当前版本的所有改动都合并到Trunk中。
你也可以将Trunk中的某些更新合并到Branch中,还是同样的方法。
查看当前Branch和Trunk的合并情况
可以使用svn mergeinfo来查看merge情况。
查看当前Branch中已经有那些改动已经被合并到Trunk中:
1 |
|
查看Branch中那些改动还未合并。
1 |
|
SVN中Branch的创建与合并的更多相关文章
- SVN中Branch的创建于合并
SVN中Branch的创建于合并 在使用源代码版本控制工具时,最佳实践是一直保持一个主干版本.但是为了应付实际开发中的各种情况,适时的开辟一些分支也是很有必要的.比如在持续开发新功能的同时,需要发布一 ...
- 版本控制:SVN中Branch/tag的使用 -摘自网络
在SVN中Branch/tag在一个功能选项中,在使用中也往往产生混淆. 在实现上,branch和tag,对于svn都是使用copy实现的,所以他们在默认的权限上和一般的目录没有区别.至于何时用tag ...
- SVN中分支的建立与合并
转载 出处:http://yaozhong1988.blog.163.com/blog/static/141737885201162671635126/ 一. SVN分支的意义: 简单 ...
- SVN中Branch和Merge实践
参考资料:http://blog.csdn.net/eggcalm/article/details/6606520 branch主要用于新功能的开发,开发过程中不断从trunk merge revis ...
- SVN中tag branch trunk用法详解
SVN中tag branch trunk用法详解 2010-05-24 18:32 佚名 字号:T | T 本文向大家简单介绍一下SVN中tag branch trunk用法,SVN中tag bran ...
- SVN 中trunk、branches、tags
SVN 中trunk.branches.tags 我们在一些著名开源项目的版本库中,通常可以看到trunk, branches, tags等三个目录.由于SVN固有的特点,目录在SVN中并没有特别 ...
- SVN中的Trunk、Tag、Brance的用法
在SVN中Branch/tag在一个功能选项中,在使用中也往往产生混淆.在实现上,branch和tag,对于svn都是使用copy实现的,所以他们在默认的权限上和一般的目录没有区别.至于何时用tag, ...
- SVN分支创建与合并
SVN分支 一个branch是某个development line(通常是主线也即trunk)的一个拷贝,branch存在的意义在于,在不干扰trunk的情况下,和trunk并行开发,待开发结束后合并 ...
- svn中的trunk,branch和tags(转)
转自:https://www.cnblogs.com/keyi/p/5953649.html 我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我 ...
随机推荐
- nginx 命令
nginx 命令 sudo /etc/init.d/nginx configtest 测试是否配置有错 sudo /usr/local/nginx/sbin/nginx -s reload ...
- 编程范式 episode3 and 4,5
episode 3 --storage structure. ampersand operate with asterisk --library function episode 4 --generi ...
- VC++ chap13 文档与串行化
Lesson 13 文档与串行化 13.1使用CArchive类对文件进行读写操作 //让对象数据持久性的过程称之为串行化,或者序列化 void CGraphicView::OnFileWrite() ...
- Android 中的 WebView实现 Html5 标签网页加载
自Android 4.4起,Android中的WebView开始基于Chromium(谷歌浏览器)支持浏览器的一系列功能,webkit解析网页各个节点,这个改变,使得WebView的性能大幅度提升,并 ...
- linux磁盘限额和进阶文件系统的管理 quota RAID LVM
概念: Quota 的一般用途: 针对 WWW server ,例如:每个人的网页空间的容量限制! 针对 mail server,例如:每个人的邮件空间限制. 针对 file server,例如:每个 ...
- zabbix网络发现
zabbix的网络自动发现是一个非常强大的功能,该功能可以完成以下工作 •快速发现并添加主机. •简单的管理. •随着环境的改变而快速搭建监控系统. 网络发现基于以下信息 •ip地址段 •基于服务的F ...
- Map:containsKey、containsValue 获取Map集合的键值的 值
get(Object key) 返回与指定键关联的值: containsKey(Object key) 如果Map包含指定键的隐射,则返回true: containsValue(Object valu ...
- Spring AOP小结
一. AOP介绍 AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP ...
- C++Builder 中 Enter键或者Tab键无效
VC++中或者C++Builder中 当回车键不能换行时应该就是因为自己不小心按到了键盘上的insert键,要想恢复只需要再按一下就可以了. 小经验
- sublime text 3 技巧
sublime text 技巧 学习目的:熟悉sublime快捷键和功能,改进自己的工作方式. 学习流程:先把视频中涉及到的技巧记录下,再完整的看一遍所有的菜单和功能. 前端开发工具技巧介绍-Subl ...