——简单的对照

  SVN的工作机制在某种程度上就像一颗正在生长的树:

  • 一颗有树干和很多分支的树
  • 分支从树干生长出来。而且细的分支从相对较粗的树干中长出
  • 一棵树能够仅仅有树干没有分支(可是这样的情况不会持续非常久。随着树的成长,肯定会有分支啦。^^)
  • 一颗没有树干可是有非常多分支的树看起来更像是地板上的一捆树枝
  • 假设树干患病了,终于分支也会受到影响,然后整棵树就会死亡
  • 假设分支患病了。你能够剪掉它,然后其它分支还会生长出来的哦!

  • 假设分支生长太快了,对于树干它可能会非常沉重,最后整棵树会垮塌掉
  • 当你感觉你的树、树干或者是分支看起来非常美丽的时候,你能够给它照张相。这样就就能够记得它在那时是多么的赞。

——Trunk

  Trunk是放置稳定代码的主要环境,就好像一个汽车工厂,负责将成品的汽车零件组装在一起。

  下面内容将告诉你怎样使用SVN trunk:

  • 除非你必须处理一些easy且能迅速解决的BUG,或者你必须加入一些无关逻辑的文件(比方媒体文件:图像,视频,CSS等等),否则永远 不要在trunk直接做开发
  • 不要由于特殊的需求而去对先前的版本号做太大的改变,怎样相关的情况都意味着须要建立一个branch(例如以下所述)
  • 不要提交一些可能破坏trunk的内容。比如从branch合并
  • 假设你在某些时候偶然间破坏了trunk。bring some cake the next day (”with great responsibilities come… huge cakes”)

——Branches

  一个branch就是从一个SVN仓库中的子树所作的一份普通拷贝。通常情况它的工作类似与UNIX系统上的符号链接。可是你一旦在一个SVN branch里改动了一些文件,而且这些被改动的文件从拷贝过来的源文件独立发展,就不能这么觉得了。

当一个branch完毕了。而且觉得它足够稳定的时
候,它必须合并回它原来的拷贝的地方,也就是说:假设原来是从trunk中拷贝的。就应该回到trunk去,或者合并回它原来拷贝的父级branch。

  下面内容将告诉你怎样使用SVN branches:

  • 假设你须要改动你的应用程序。或者为它开发一个新的特性,请从trunk中创建一个新的branch,然后基于这个新的分支进行开发
  • 除非是由于必须从一个branch中创建一个新的子branch。否则新的branch必须从trunk创建
  • 当你创建了一个新branch,你应当马上切换过去。假设你没有这么做,那你为什么要在最初的地方创建这个分支呢?

——Tags

  从表面上看,SVN branches和SVN tags没有什么区别。可是从概念上来说。它们有很多区别。事实上一个SVN tags就是上文所述的“为这棵树照张相”:一个trunk或者一个branch修订版的命名快照。

  下面内容将告诉你怎样使用SVN tags:

  • 作为一个开发人员,永远不要切换至、取出,或者向一个SVN tag提交不论什么内容:一个tag好比某种“照片”。并非实实在在的东西,tags仅仅可读。不可写。

  • 在特殊或者须要特别注意的环境中,如:生产环境(production)、?(staging)、測试环境(testing)等等,仅仅 能从一个修复过的(fixed)tag中checkout和update,永远不要commit至一个tag。
  • 对于上述提及到的环境,能够创建例如以下的tags:“production”,“staging”。“testing”等等。你也能够根 据软件版本号、项目的成熟程度来命名tag:“1.0.3”,“stable”,“latest”等等。

  • 当trunk已经稳定,而且能够对外公布,也要对应地又一次创建tags,然后再更新相关的环境(production, staging, etc)

——工作流例子

  如果你必须加入了一个特性至一个项目,且这个项目是受版本号控制的,你差点儿相同须要完毕例如以下几个步骤:

  1. 使用SVN checkout或者SVN switch从这个项目的trunk获得一个新的工作拷贝(branch)
  2. 使用SVN切换至新的branch
  3. 完毕新特性的开发(当然,要做足够的測试,包含在開始编码前)
  4. 一旦这个特性完毕而且稳定(已提交)。并经过你的同事们确认,切换至trunk
  5. 合并你的分支至你的工作拷贝(trunk),而且解决一系列的冲突
  6. 又一次检查合并后的代码
  7. 假设可能的话。麻烦你的同事对你所编写、更改的代码进行一次复查(review)
  8. 提交合并后的工作拷贝至trunk
  9. 假设某些部署须要特殊的环境(生成环境等等)。请更新相关的tag至你刚刚提交到trunk的修订版本号
  10. 使用SVN update部署至相关环境

SVN之 trunk, branches and tags意义的更多相关文章

  1. SVN组成中trunk,branches and tags功能用法详解

    SVN组成中trunk,branches and tags功能用法详解  我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我就摘录一篇文章来简单说 ...

  2. SVN中trunk,branches,tags用法详解

    原文地址:http://www.cnblogs.com/dafozhang/archive/2012/06/28/2567769.html Subversion有一个很标准的目录结构,是这样的.比如项 ...

  3. SVN中trunk,branches,tags用法详解(转载)

    转载出处:http://www.cnblogs.com/dafozhang/archive/2012/06/28/2567769.html Subversion是一个自由开源的版本控制系统.在Subv ...

  4. SVN中trunk,branches,tags用法详解【转】

    Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/|+-trunk+-branches+-ta ...

  5. SVN中trunk,branches,tags用法详解[重要]

    Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/|+-trunk+-branches+-ta ...

  6. SVN中trunk,branches,tags的使用明细--项目代码的管理

    SVN在项目开发过程中有两种模式: 第一种:Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局svn://proj/|+ ...

  7. SVN 中trunk、branches、tags

    SVN 中trunk.branches.tags   我们在一些著名开源项目的版本库中,通常可以看到trunk, branches, tags等三个目录.由于SVN固有的特点,目录在SVN中并没有特别 ...

  8. SVN中trunk、branches、tags用法详解

    Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/. 那么标准的svn布局是:svn://proj/|+-trunk+-branches+-t ...

  9. SVN标准开发布局目录,trunk,branches,tags用法详解

    http://www.cnblogs.com/newstar/archive/2011/01/04/svn.html 关于 SVN 目录结构       Subversion有一个很标准的目录结构,是 ...

随机推荐

  1. CentOS6.5搭建ldap及pdc的过程

    linux   centos6.5,,配置的是本地yum,采用光盘自带的rpm包进行安装 安装openldap server 以及client yum install openldap-server ...

  2. 基于 WPF 平台的 ActiveReports Viewer控件

    ActiveReports 报表控件致力于为组织和个人提供最出色的报表解决方案,多年来ActiveReports已经提供了 Windows Forms.Web.Silverlight和Flash平台的 ...

  3. ActiveReports 报表应用教程 (14)---数据可视化

    葡萄城ActiveReports报表中提供了丰富的数据可视化解决方案,用户可以将数据以图像化的方式进行显示,让报表数据更加形象且便于理解.在葡萄城ActiveReports报表中提供了大多数常用的二维 ...

  4. 学习笔记(3)——实验室集群WMS服务配置

    1.启动mgt结点的tomcat服务: [root@mgt zmq]# /home/geohpc/softwares/apache-tomcat-/bin/startup.sh 关闭为 [root@m ...

  5. Spring学习笔记(一):快速入门

    Spring简介:        Spring是一个开源框架,它由Rod Johnson创建.它是为了解决企业应用开发的复杂性而创建的.Spring使用基本的JavaBean来完成以前只可能由EJB完 ...

  6. 【Python】keras神经网络识别mnist

    上次用Matlab写过一个识别Mnist的神经网络,地址在:https://www.cnblogs.com/tiandsp/p/9042908.html 这次又用Keras做了一个差不多的,毕竟,现在 ...

  7. 如何监视 Azure 中的虚拟机

    通过收集.查看和分析诊断与日志数据,可以利用很多机会来监视 VM. 若要执行简单的 VM 监视,可以在 Azure 门户中使用 VM 的“概述”屏幕. 可以使用扩展在 VM 上配置诊断以收集更多指标数 ...

  8. SQL Server 查询表的字段对应描述、数据类型、长度

    create procedure proc_view_cloumns ( ) ) AS select b.name,a.value,c.name, b.max_length from sys.exte ...

  9. Yearning v1.3.0 发布,Web 端 SQL 审核平台

    企业级MYSQL web端 SQL审核平台. Website 官网 www.yearning.io Feature 功能 数据库字典自动生成 SQL查询 查询工单 导出 自动补全,智能提示 查询语句审 ...

  10. ajax status 错误

    status **:未被始化 status **:请求收到,继续处理 status **:操作成功收到,分析.接受 status **:完成此请求必须进一步处理 status **:请求包含一个错误语 ...