本篇目录

前言

使用svn做为源码管理工具已有几年,但一直都只是使用到了trunk。最近项目中发版本每次都会将一个版本的文件拷贝打包为rar压缩文件,下个版本迭代则重新在svn服务端创建新的Repository用于管理。显然这tag版本脱离了svn的管理,日志记录也会发生断层。

于是最近就查阅了一些文章,结合实际对 trunk、tags、branches 进行体验操作,有点收获,怕以后忘了,故做此记录。

SVN分支管理策略

其中

Trunk:主开发分支,所有最新的代码都在这里。

Tags:一个里程碑版本,一般都可保证直接上线(名字:”V1.0”,”V1.1”,”V2.1”,”School_V1.0”,”School_V1.1”…),用于存放发布的版本。

Hotfix branch:修正bug的分支(名字:”hotfix_V1.x”,” School_hotfix_V1.x”, “School_hotfix_V1.x”),从需要修复的tag拉出分支,用于解决已上线版本的bug。

Customize branch:定制化需求的开发分支(名字:”School_Develop”…),用于定制化需求开发一个版本。

VisualSVN Server

服务端采用VisualSVN Server是免费的,而客户端VisualSvn是收费的,可使用免费AnkhSvn替代集成至Visual Studio使用。VisualSVN Server的下载地址:https://www.visualsvn.com/server/download/,VisualSVN Server的安装使用网上有很多文章,此处不做描述。

TortoiseSVN客户端

Repository的创建


Check out

首先Checkout在服务端repository创建的Test,默认创建了三个空文件夹。

trunk创建新项目MyProject

trunk更新提交更新,迭代版本创建Tag V1.0

提交迭代版本更新。

基于trunk中最新版本创建Tag_V1.0。在/trunk/MyProject目录上右键,依次选择"TortoiseSVN" -> "Branch/tag...",在弹出窗口的"To path"中填入tag的地址。

提交后在文件夹更新后会在Test\tags文件夹下出现MyPro_V1.0文件夹,tags目录下的MyPro_V1.0文件夹就是以trunk中指定的版本拷贝的副本做为版本V1.0进行的封存。

基于Tag的Hotfix Branch

当版本V1.0发布上线后,出现线上bug后需要修复,则以Tag中MyPro_V1.0创建Hotfix Branch(步骤和创建Tag类似),在Hotfix的分支中修复问题。修复完成后需要将此次的改动Marge(合并)到trunk中同时创Tag_V1.1进行发布。

提交后在文件夹更新后会在Test\branches文件夹下出现bugfix_by_account文件夹,在此基础上修复问题并提交。

在/branches/bugfix_by_account目录上右键,依次选择"TortoiseSVN" ->"Revision graph",在弹出的窗口中可以看到版本分支图。


Hotfix Branch改动Marge(合并)到trunk中同时创Tag_V1.1进行发布

在/trunk/MyProject目录上右键,依次选择"TortoiseSVN" ->"Merge...",

点Next出现如下窗口,

如果trunk中的版本修改过的文件与Hotfix分支中的修改不重合则不会产生冲突。下图是trunk进行过版本提交,与Hotfix分支中的修改产生冲突。

点击 Edit Confict解决冲突。

冲突处理完后点击Resolved,冲突解决完成本地trunk中已包含Hotfix分支的内容,合并后需要提交至svn服务器。

Hotfix分支修复完成后创建Tag_V1.1与之前trunk创建Tag_V1.0类似。

完成以上动作后的版本分支图如下。

定制化分支Customize branch

定制化分支使用的方式和之前创建branch方式类似,在此不做赘述。

总结

合并发生在本地working copy,只要你不提交就不会影响到repository。

合并前一定要先update、commit,保证不会out of day,并将本地的修改保存到repository。

使用svn创建的分支都会在指定的文件夹中创建副本,如果是在不同的分支文件夹中开发时候需要重新对项目配置(eg:IIS外部主机),也可在trunk中切换分支则不用修改配置,但是svn服务端需要保持可连接状态。

SVN分支管理策略个人见解的更多相关文章

  1. Git工程开发实践(四)——Git分支管理策略

    A successful Git branching model https://nvie.com/posts/a-successful-git-branching-model/ Git工程开发实践( ...

  2. Git 分支管理策略

    分支管理策略 下面我们来说一下一般企业中开发一个项目的分支策略: 主分支 master 开发分支 develop 功能分支 feature 预发布分支  release bug 分支 fixbug 其 ...

  3. git分支管理之分支管理策略

    分支管理策略 阅读: 246888 通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息. 如果要强制禁用Fast forward模式,Git就 ...

  4. 五、git学习之——分支管理策略、Bug分支、feature分支、多人协作

    一.分支管理策略 通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息. 如果要强制禁用Fast forward模式,Git就会在merge时生 ...

  5. Git 分支管理策略汇总

    原文链接: Git 分支管理策略 最近,团队新入职了一些小伙伴,在开发过程中,他们问我 Git 分支是如何管理的,以及应该怎么提交代码? 我大概说了一些规则,但仔细想来,好像也并没有形成一个清晰规范的 ...

  6. SVN 分支管理

    平时在工作中使用 SVN 只是限于 commit,update 这样的操作,至多再 reslove 解决一下冲突,没有用过分支管理.开发过程中一般都是一个功能开发完成之后整体进行提交,而最近在项目中有 ...

  7. git 分支管理策略 与 物理实现 --author by阮一峰 & 小鱼

    -------------------------下面是阮一峰博士的git branch 逻辑结构图示---------------------------------------------- 如果 ...

  8. git 教程(15)--分支管理策略

    通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息. 如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的comm ...

  9. 梳理git分支管理策略

    如果你严肃对待编程,就必定会使用"版本管理系统"(Version Control System). 眼下最流行的"版本管理系统",非Git莫属. 相比同类软件, ...

随机推荐

  1. 有趣的代码: fixTypeof

    typeof 可以匹配对象的类型,但是他的能力很弱,比如 typeof new String('123')会显示的object这是我们不想看到的结果很久以前JQ的作者通过Object.prototyp ...

  2. Getting Started With Hazelcast 读书笔记(第一章)

    第一章:数据集群的演化与 早期的服务器架构 显然,应用是可扩展的,但是由于是集中式服务器,随着数据库性能达到极限,再想扩展就变得极端困难,于是出现了缓存.    缓存显然再次提升了可扩展性,减轻了数据 ...

  3. --with-http_realip_module选项(后台Nginx服务器记录原始客户端的IP地址 )

    转自:http://blog.itpub.net/27043155/viewspace-734234/ 通过这个模块允许我们改变客户端请求头中客户端IP地址值(例如,X-Real-IP 或 X-For ...

  4. javascript面向对象(2)

    主要内容: 作用域 在了解作用域之前,请先看一段代码: 通过运行示例可知,变量d和c报错.在预处理阶段,预处理会将全局中的判断语句忽略,直接加var声明的变量和function声明的函数. 作用域的分 ...

  5. Goals100

    Start:2016.4.10 100天目标:jy_ai学习.swift.设计模式        以10天为周期,开始周会,执行内容:自我检讨本周期,并展望下一个周期:目标一:寻找高效方法.1.思考, ...

  6. java面试中问题

    HashMap数据结构 http://blog.csdn.net/weiyouyin/article/details/5693496 HashMap冲突 http://www.blogjava.net ...

  7. iis 500.19错误解决过程记录

    前段时间一直在纠结C#中,dll的管理问题.最后选择使用nugetgallery进行公共库管理.项目地址:https://github.com/NuGet/NuGetGallery.这是一个nuget ...

  8. error C2065: “CDatabase”: 未声明的标识符

    使用vc++与access的接口时出现错误“error C2065: “CDatabase”: 未声明的标识符” 解决方法: 添加 #include "afxdb.h"

  9. SQL 使用 AND 与 OR

    1.介绍:关于AND与OR的使用是比较基础的,但是在项目中如果不注意使用的话会使查出来的数据有错误. 2.主要问题: 在未加任何AND与OR的选择是独立的,与逻辑运算一样.即: SELECT * FR ...

  10. IE8的兼容性问题

    IE的兼容性问题是前端开发人员的老大难问题,不过随着时代的发展,IE6逐渐的被淘汰,现在以及很少有网站兼容IE6了,一般都兼容到IE8,现在我总结了一些IE8的兼容性问题及解决方法. 1.使用meta ...