首页 技术 正文
技术 2022年11月23日
0 收藏 498 点赞 4,274 浏览 1856 个字

SVN中Branch的创建于合并

SVN中Branch的创建于合并

在使用源代码版本控制工具时,最佳实践是一直保持一个主干版本。但是为了应付实际开发中的各种情况,适时的开辟一些分支也是很有必要的。比如在持续开发新功能的同时,需要发布一个新版本,那么就需要从开发主干中建立一个用于发布的分支,在分支上进行bug fix,维护版本的稳定,并适时的将一些改动合并回主干。目前大红大紫的源代码版本控制工具git很受大家推崇,原因之一就是其在这方面的功能相当强大。其实老牌的SVN也是有这样的功能的,接下来就给大家讲解下。

Branch的创建

在SVN中主干代码一般是放置在Trunk目录下的,如果要新建Branch的话则放置在Branchs目录下。(注意这是一种约定,SVN并不强制你这样做)注意Branhs和Trunk目录要平级,不能有嵌套,要不会引起混乱。

1
2
3
4
  myproject/
trunk/
branches/
tags/

创建一个Branch也相当简单,只需要一条命令即可。

1
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上,那么应该怎么做那?

  1. 保证当前Branch分支是clean的,也就是说使用svn status看不到任何的本地修改。

  2. 命令行下切换到Trunk目录中,使用 svn merge http://example.com/repos/myproject/branches/releaseForAug 来将Branch分支上的改动merge回Trunk下。

  3. 如果出现merge冲突则进行解决,然后执行svn ci -m 'description'来提交变动。

当然在merge你也可以指定Branch上那些版本变更可以合并到Trunk中。

1
svn merge  http://example.com/repos/myproject/branches/releaseForAug -r150:HEAD

示例中是将Branch的从版本150到当前版本的所有改动都合并到Trunk中。

你也可以将Trunk中的某些更新合并到Branch中,还是同样的方法。

查看当前Branch和Trunk的合并情况

可以使用svn mergeinfo来查看merge情况。

查看当前Branch中已经有那些改动已经被合并到Trunk中:

1
2
# cd to trunk directory
svn mergeinfo http://example.com/repos/myproject/branches/releaseForAug

查看Branch中那些改动还未合并。

1
2
3
#cd to trunk directory
svn merginfo http://example.com/repos/myproject/branches/releaseForAug --show-revs eligible

作者:黄博文@无敌北瓜 
出处:http://www.cnblogs.com/huang0925
黄博文的地盘
本文版权归本人和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 分类: 编程开发

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,909
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,434
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,249
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,060
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,692
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,730