本篇目录

前言

使用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. 用Navicat_SSH 连接数据库服务器

    SSH设置(只限于Mysql.oracle.PostgreSQL及 SQL Server 并只支持 SSH2通讯协定) Secure SHell(SSH)是一个通过网络登录其他计算机的程序,在远程服务 ...

  2. csrf跨站请求伪造

    如何杜绝跨站请求伪造? 1.要让服务器知道本次请求是不是冒用了用户的身份→ 2.服务器发给用户一个凭证,用户请求时需携带此凭证→ 3.此凭证只能用户看到而且冒用者看不到→ 4.这就用到了浏览器的安全机 ...

  3. Java中四种引用:强、软、弱、虚引用

    这篇文章非常棒:http://alinazh.blog.51cto.com/5459270/1276173 Java中四种引用:强.软.弱.虚引用 1.1.强引用当我们使用new 这个关键字创建对象时 ...

  4. win8 vs2010 openni2 配置

    打开一个新项目或者已存在的项目用以使用  OpenNI 在Visual Studio 菜单中, 打开项目菜单,选择项目属性. 在C/C++ 选项卡中, 在"常规" 下, 选择 &q ...

  5. javascript里的继承

    js里面继承的方式, 1. 类式继承,通过构造函数的继承 function extend(subClass, superClass){ var F = function(){}; F.prototyp ...

  6. [C#.net] SendMessage

    函数功能:该函数将指定的消息发送到一个或多个窗口.此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回.该函数是应用程序和应用程序之间进行消息传递的主要手段之一.     函数原型:LRESU ...

  7. win7/win8远程桌面 server 2003 卡的问题

    原因在于从vista开始,微软在TCP/IP协议栈里新加了一个叫做“Window Auto-Tuning”的功能.这个功能本身的目的是为了让操作系统根据网络的实时性能(比如响应时间)来动态调整网络上传 ...

  8. ES6详解

    1.ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. const声明常亮,不可改变 2.变量的解构赋值 (1)数组的解构赋值: 以前,为 ...

  9. 如何设置eclipse字体及大小

    1.打开eclipse菜单栏的Windows选项 2.选择其中的preference选项,界面如下图所示 3.选择General –> Appearance –> Colors and F ...

  10. 易学PHP——WAMP环境搭建

    安装前的准备 查看本机的类型(x86/x64,即 32 位还是 64 位) 安装好 VC9/VC11/VC14 运行库(需要按照本机的类型选择安装) 创建好一个安装路径用于安装整套 amp 环境(我使 ...