zoukankan      html  css  js  c++  java
  • SVN分支管理策略个人见解

    本篇目录

    前言

    使用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 ags文件夹下出现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进行发布。


    提交后在文件夹更新后会在Testranches文件夹下出现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服务端需要保持可连接状态。

    最后说一句用过git之后,再也不想用其它[源代码]管理器。


  • 相关阅读:
    织梦安装
    讲解版的自动轮播(新手福利)样式和js就不分离了为了看的方便
    APP制作过程
    细线边框
    APP常用模块
    PC-JS小技巧
    PC-CSS-多浏览器支持HTML5
    jQuery瀑布流实例无限滚动加载图片
    25个Java机器学习工具&库(收藏)
    java中的动态代理----自己手动实现
  • 原文地址:https://www.cnblogs.com/ddrsql/p/5909683.html
Copyright © 2011-2022 走看看