SVN之 trunk, branches and tags意义
——简单的对照
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)
——工作流例子
如果你必须加入了一个特性至一个项目,且这个项目是受版本号控制的,你差点儿相同须要完毕例如以下几个步骤:
- 使用SVN checkout或者SVN switch从这个项目的trunk获得一个新的工作拷贝(branch)
- 使用SVN切换至新的branch
- 完毕新特性的开发(当然,要做足够的測试,包含在開始编码前)
- 一旦这个特性完毕而且稳定(已提交)。并经过你的同事们确认,切换至trunk
- 合并你的分支至你的工作拷贝(trunk),而且解决一系列的冲突
- 又一次检查合并后的代码
- 假设可能的话。麻烦你的同事对你所编写、更改的代码进行一次复查(review)
- 提交合并后的工作拷贝至trunk
- 假设某些部署须要特殊的环境(生成环境等等)。请更新相关的tag至你刚刚提交到trunk的修订版本号
- 使用SVN update部署至相关环境
SVN之 trunk, branches and tags意义的更多相关文章
- SVN组成中trunk,branches and tags功能用法详解
SVN组成中trunk,branches and tags功能用法详解 我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我就摘录一篇文章来简单说 ...
- SVN中trunk,branches,tags用法详解
原文地址:http://www.cnblogs.com/dafozhang/archive/2012/06/28/2567769.html Subversion有一个很标准的目录结构,是这样的.比如项 ...
- SVN中trunk,branches,tags用法详解(转载)
转载出处:http://www.cnblogs.com/dafozhang/archive/2012/06/28/2567769.html Subversion是一个自由开源的版本控制系统.在Subv ...
- SVN中trunk,branches,tags用法详解【转】
Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/|+-trunk+-branches+-ta ...
- SVN中trunk,branches,tags用法详解[重要]
Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/|+-trunk+-branches+-ta ...
- SVN中trunk,branches,tags的使用明细--项目代码的管理
SVN在项目开发过程中有两种模式: 第一种:Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局svn://proj/|+ ...
- SVN 中trunk、branches、tags
SVN 中trunk.branches.tags 我们在一些著名开源项目的版本库中,通常可以看到trunk, branches, tags等三个目录.由于SVN固有的特点,目录在SVN中并没有特别 ...
- SVN中trunk、branches、tags用法详解
Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/. 那么标准的svn布局是:svn://proj/|+-trunk+-branches+-t ...
- SVN标准开发布局目录,trunk,branches,tags用法详解
http://www.cnblogs.com/newstar/archive/2011/01/04/svn.html 关于 SVN 目录结构 Subversion有一个很标准的目录结构,是 ...
随机推荐
- 从零开始学习html(十五)css样式设置小技巧——下
六.垂直居中-父元素高度确定的单行文本 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8&quo ...
- 葡萄城报表介绍:矩表(Tablix)
一.矩表(Tablix)定义 Tablix 即表(Table)+矩阵(Matrix)+列表(List),它是报表中展示数据的一种工具,由表.矩阵.列表这三个具有相似性的报表项组成. 二.矩表(Tabl ...
- describe命令
describe简写是desc 表 desc t1; desc t1 column1; desc extended t1; desc formatted t1; 数据库 desc database t ...
- AOP编程报错Xlint:invalidAbsoluteTypeName
@Component@Aspectpublic class DingdingAspect { private Logger logger = LoggerFactory.getLogger(this. ...
- Django开发笔记(一)
Django开发笔记(一) 标签(空格分隔): Django Python 1. 创建并运行Django项目 创建开发环境 安装Django pip install django==version 执 ...
- 如何在 Azure 门户中将托管数据磁盘附加到 Windows VM
本文介绍了如何通过 Azure 门户将新的托管数据磁盘附加到 Windows 虚拟机. 在开始之前,请查看以下提示: 虚拟机的大小决定了可以附加多少个磁盘. 有关详细信息,请参阅虚拟机大小. 对于新磁 ...
- SQL Server Management Studio记住的密码丢失的问题
不知道各位经常使用SSMS的时候有没有碰到过这样的烦恼: 记住的密码总是丢失: 步骤如下: 登陆时,选择记住密码 在任何一个存储过程上点击右键,选择修改 这时候再次连接对象资源管理器时,刚刚记住的密码 ...
- 移除jboss响应中的中间件信息
JBoss 4.2 Suppressing the X-Powered-By header in JBoss 4.2.x can be done by modifying the web.xml fi ...
- SQL Server 请求失败或服务未及时响应。有关详细信息,请参见事件日志或其它适合的错误日志
在打开数据库的时候,突然出现异常错误,然后我去关闭sql server 服务,然后重启服务的时候,不能重启,出现以下错误 “请求失败或服务未及时响应.有关详细信息,请参见事件日志或其它适合的错误日志” ...
- 转:总结const、readonly、static三者的区别
const:静态常量,也称编译时常量(compile-time constants),属于类型级,通过类名直接访问,被所有对象共享! a.叫编译时常量的原因是它编译时会将其替换为所对应的值: b.静态 ...