svn代码版本管理总结

在本篇文章中, 我将会详细说明我是如何应用SVN trunk(树干)、branches(分支)和tags(标记)。这种方法同样被称为“branch always”,两者非常接近。可能我所介绍的并不是最好的方法,但是它会给新手一些解释说明,告诉他们trunk、branches和tags是什么,并且该如何去应用它们。

  当然,如果本文有些要点需要澄清/确认,亦或者有一些错误的观点,还请你评论,自由发表自己的观点。

——简单的对比

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

  • 一颗有树干和许多分支的树
  • 分支从树干生长出来,并且细的分支从相对较粗的树干中长出
  • 一棵树可以只有树干没有分支(但是这种情况不会持续很久,随着树的成长,肯定会有分支啦,^^)
  • 一颗没有树干但是有很多分支的树看起来更像是地板上的一捆树枝
  • 如果树干患病了,最终分支也会受到影响,然后整棵树就会死亡
  • 如果分支患病了,你可以剪掉它,然后其他分支还会生长出来的哦!
  • 如果分支生长太快了,对于树干它可能会非常沉重,最后整棵树会垮塌掉
  • 当你感觉你的树、树干或者是分支看起来很漂亮的时候,你可以给它照张相,这样就就可以记得它在那时是多么的赞。

——Trunk

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

  以下内容将告诉你如何使用SVN trunk:

  • 除非你必须处理一些容易且能迅速解决的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部署至相关环境

转载于:https://www.cnblogs.com/dongblog/p/4013329.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432274.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++11中enum class的使用

枚举类型(enumeration)使我们可以将一组整型常量组织在一起。和类一样,每个枚举类型定义了一种新的类型。枚举属于字面值常量类型。 C包含两种枚举:限定作用域的和不限定作用域的。这里主要介绍限定作用域的。不限定作用域的使用可以参考: h…

亿T算力量子计算机,终于,中国实现“量子计算优越性”,算力比最快超算快一百万亿倍...

就在今天12月4日,一篇由中国科学技术大学潘建伟、陆朝阳等组成的量子计算研究团队,发表在国际顶级科技学术期刊《Science》上的研究成果《使用光子的量子计算优势》,正式宣告中国终于实现了“量子计算优越性”。采用论文中所述量子技术构建的…

查找场景中的actor

UWorld* world GetWorld();for (TActorIterator<AMyActor> It(world, AMyActor::StaticClass()); It; It){AMyActor* actor *It;if (actor ! NULL){}}

Exception from HRESULT: 0x800A03EC

Exception from HRESULT: 0x800A03EC 分类&#xff1a; asp.net 2013-03-04 18:16 1191人阅读 评论(0) 收藏 举报 Exception from HRESULT: 0x800A03EC 在读取Excel文件时&#xff0c;出现这样的一个异常&#xff0c;搞很长时间&#xff0c;最后发现犯了一个愚蠢的低级错误&am…

学校计算机教室安全预案,小学校园微机室安全事故应急疏散预案

小学校园微机室安全事故应急疏散预案提要:若室内因线路故障或其它不可预知因素发生火灾时,应立即疏散学生并关闭电源,用灭火器及其它有效方法进行灭火更多文章来源自 房 地产e网小学校园微机室安全事故应急疏散预案微机室是对学生进行信息技术教学的课堂,是现代课堂教学的一个重…

uva11361数位dp

挺裸的 &#xff0c;只要注意到当k超过9*10 就直接输出0就可以了。 #include <cstdio> #include <cstring> #include <algorithm> #include <climits> #include <string> #include <iostream> #include <map> #include <cstdlib…

TArray

1. 遍历 for&#xff08;auto i : MyTArray){i-> or *i} 2 找到最大值的索引 int32 IndexOfMax(TArray<float> Array) {int32 HighestIndex 0;for (int32 Counter 0; Counter < Array.Num(); Counter){if (Counter > 0){if ([]() { return (Array[Coun…

小学数学加减法测试软件,儿童数学加法运算火箭(测试版)

儿童数字加法运算火箭是一部益智早教、启蒙幼儿学习基础算术的免费学习机&#xff0c;它可以更好的启发刚入门学习数数的宝宝&#xff0c;开拓小孩的计算思维&#xff0c;锻炼幼儿对数字的敏感性&#xff0c;让幼小的小朋友们也可以拥有超快口算、速算、心算一样的能力&#xf…

OpenGL版本与OpenGL扩展机制

1 opengl的版本区别&#xff08;在opengl官方文档中有详细说明&#xff09; 针对Opengl不同版本的升级是主要是扩展指令集。 现在版本是4.0啦 1.1 opengl1.1 1995年&#xff0c;SGI推出了更为完善的OpenGL 1.1版本。OpenGL 1.1的性能比1.0版提高甚多。其中包括改进打印…

PHP编写命令行脚本和后台运行程序的注意事项

在一些场合(如开发,测试), 可能需要使用PHP编写一些命令行的处理脚本,或者是长时间后台运行的任务, 需要注意以下准则: 准则1. 尽量避免使用PHP编写后台运行程序, 尤其是类似while(true){….} 这种循环的处理脚本. 比如,有时候我们需要定期检查数据库,然后有数据进行处理,没有数…

沃尔沃挖机计算机故障,沃尔沃挖掘机常见故障及原因总结,用户们可以看看

这是一篇关于沃尔沃挖机的常见故障及可能原因的总结送给大家 &#xff0c;希望能对沃尔沃挖机使用者提供一定的参考借鉴。一、沃尔沃210型挖机热车难启动故障现象&#xff1a;用户平时经常遇到冷车好启动、热车要打好几次才能启动。原因&#xff1a;1.可能是油泵有问题&#xf…

讲座感悟

我于周四、周五上午十点至十二点在山东大学齐鲁软件园校区圆形报告厅聆听了由Prof.Foley主持的精彩讲说&#xff0c;观看了Prof.Foley的最新研究成果以及对Computer Graphics的独到见解&#xff0c;我有如下的体会。 第一&#xff1a;计算机图形学的目标是实现与真实世界的完美…

计算机在材料中的运用结课,计算机在材料科学工程中的应用的结课论文.doc

计算机在材料科学工程中的应用的结课论文《计算机在材料科学与工程中的应用》的结课论文做为一个21世纪的大学生&#xff0c;计算机就显得尤为重要&#xff0c;而我们的本专业是21世纪的新型专业材料科学与工程&#xff0c;那么学好二者就更为重要&#xff0c;在大三我们学校给…

C#生成DLL文件

使用csc命令将.cs文件编译成.dll的过程 很多时候,我们需要将.cs文件单独编译成.dll文件, 操作如下: 打开命令窗口->输入cmd到控制台->cd C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322 转到vs.net安装的该目录下->执行csc命令csc /target:library File.cs->在该目…

通过live555实现H264 RTSP直播

前面的文章中介绍了《H264视频通过RTMP流直播》&#xff0c;下面将介绍一下如何将H264实时视频通过RTSP直播。 实现思路是将视频流发送给live555, 由live555来实现H264数据流直播。 视频采集模块通过FIFO队列将H264数据帧发送给live555. live555 在收到客户端的RTSP播放请求后&…

计算机网络设置端口转发,网件NETGEAR几款路由器端口转发功能设置方法

WPN824, RP614v2&#xff0c;MR814v2&#xff0c;WGR614&#xff0c;WGT624 端口转发设置实例。(以 RP614v2 为例)1. WPN824, RP614v2&#xff0c;MR814v2&#xff0c;WGR614&#xff0c;WGT624 如何设置端口转发&#xff1f; 先登陆到设备的配置截面 在‘高级选项(Advanced)’…

计算机分数的简便运算,分数的简便运算和分数的解方程

问题描述&#xff1a;分数的简便运算和分数的解方程简便运算四又十五分之八一又二十分之十三三又四分之一十-二又十二分之七-四又六分之五五又五分之二-(1.8二又四分之九)二又三分之一-1.5三又十二分之五六又十三分之五-2.375-一又八分之五3.825二又九分之四一又九分之五四又三…

OpenGL 4.0 Tutorials 第三章:初始化 OpenGL 4.0

原文地址&#xff1a; http://www.rastertek.com/gl40tut03.html Tutorial 3: Initializing OpenGL 4.0 第三章&#xff1a;初始化 OpenGL 4.0 This tutorial will be the first real introduction to working with OpenGL 4.0. We will address three main things which are …

客户机和服务器在s7通信中各有什么作用,哪些通信口可以进行 Modbus TCP 通讯,作为 Modbus 服务器的 SIMATIC S7 CPU 可以...

以下通信端口可用于 Modbus/TCP 协议&#xff1a;在默认情况下&#xff0c;端口号 502 作为 Modbus 服务器的本地端口。可以在 Modbus 客户机中设置需要的本地端口&#xff0c;通常使用从 2000 开始的端口号。如果通信伙伴具有为服务器设置端口号的功能&#xff0c;那么也可以使…

移位操作符

移位操作符操作运算对象是 位(bit) 它处理的数据类型只能是 整数类型(int) 先大概看一下图,了解它是怎么移动的,下面会解释规则 移位的时候关注两点, 1.移动的方向 2.空缺位置的填补形式. "有符号"左移位操作符(<<) 将二进制数据左移(在低位补0). int i 124…