• 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之后,再也不想用其它[源代码]管理器。

  • 相关阅读:
    错误:CS0234: 命名空间“System”中不存在类型或命名空间名称“Linq”的解决方法
    DotNetNuke中Membership Provider机制
    解决异常“SqlParameterCollection 只接受非空的 SqlParameter 类型对象。”
    使用 Membership.ValidateUser(Login1.UserName, Login1.Password)验证用户
    布隆过滤器应用
    Paxos在大型系统中常见的应用场景(转)
    淘宝MapReduce作业特性分析(转)
    淘宝Hadoop集群的概况(转)
    内核模块管理(转)
    Centos启动流程(转)
  • 原文地址:https://www.cnblogs.com/haw2106/p/10730983.html
Copyright © 2020-2023  润新知