——简单的对照

  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. 【代码笔记】iOS-自定义loading

    一,效果图. 二,工程图. 三, 代码. ViewController.h #import <UIKit/UIKit.h> //loading #import "GPLoadin ...

  2. 【读书笔记】iOS-网络-使用推送通知

    一,本地通知 本地通知有64位的最大限制.虽然,你依然可以调度通知,不过到到达的通知数被限定为接近64个,并且按照fireDate的顺序排序,系统会忽略掉其余的通知.这意味着如果现在有64个调用的本地 ...

  3. MaxScript与外部程序通讯

    最近项目要求通过java给max发送任务指令,max接收指令执行任务,并且返回执行的结果.不管为什么会有这样的需求,有就要去实现. 1.OLE开启 Max本身提供了一个方式,它可以将自己注册成一个Ol ...

  4. 开源项目管理工具KanBoard

    KanBoard是一个很好用的项目管理软件,地址点此.它以网页形式存储在服务器或者本地,支持多标签.多项目.多用户和多种显示方式.编辑方式上支持markdown.它还提供多角度可视化的项目统计分析. ...

  5. Loadrunner 脚本开发-利用web_custom_request函数进行接口测试

    脚本开发-利用web_custom_request函数进行接口测试 by:授客 QQ:1033553122 一.POST + JSON格式参数 例: web_custom_request(" ...

  6. Hive使用SequenceFile存储数据

    SequenceFile是使用二进制保存数据,是可以压缩的,并且压缩后的数据可被分割,可以供mapreduce处理. 下面的实例使用SequenceFile保存Hive表的数据,并且使用了压缩. se ...

  7. 记一次服务器迁移后的nginx启动问题

    背景 服务器A准备下线,故直接将上面的所有应用/资料打包迁移到服务器B.包括搭建的nginx,迁移到B服务器后,楼主偷懒,就想着直接./nginx启动,过程遇到如下问题. ./nginx ./ngin ...

  8. 自定义上传控件(兼容IE8)

    上传控件是 <input type="file"/> 而实际开发过程中,都会自定义一个控件,因为这个控件本身难看,而且不同浏览器效果不一样. 如IE8显示如下: 谷歌浏 ...

  9. 一次gcc编译失败分析

    1. 场景: ​ 在使用gcc编译时,编译器报错:xxx:'xxx'未定义的引用 2. 排查过程: 首先,我很自然的想到是不是自己使用了未定义的函数或者将函数名称写错了,在检查了一边过后,我发现自己使 ...

  10. olivettifaces数据集实现人脸识别代码

    数据集: # -*- coding: utf-8 -*- """ Created on Wed Apr 24 18:21:21 2019 @author: 92958 & ...