SVN工作机制简述

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

一颗有树干和许多分支的树

分支从树干生长出来,并且细的分支从相对较粗的树干中长出

一棵树可以只有树干没有分支(但是这种情况不会持续很久,随着树的成长,肯定会有分支)

一颗没有树干但是有很多分支的树看起来更像是地板上的一捆树枝

如果树干患病了,最终分支也会受到影响,然后整棵树就会死亡

如果分支患病了,你可以剪掉它,然后其他分支还会生长出来!

如果分支生长太快了,对于树干它可能会非常沉重,最后整棵树会垮塌掉

当你感觉你的树、树干或者是分支看起来很漂亮的时候,你可以给它照张相,这样就就可以记得它在那时是多么的赞。

SVN的目录分类

使用SVN时一般都会创建这三个目录:

  • trunk:主分支目录
  • branches:各种分支的集合目录
  • tags: 不同版本的项目保存目录

trunk

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

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

除非你必须处理一些容易且能迅速解决的BUG,或者你必须添加一些无关逻辑的文件(比如媒体文件:图像,视频,CSS等等),否则永远不要在trunk直接做开发

不要因为特殊的需求而去对先前的版本做太大的改变,如何相关的情况都意味着需要建立一个branch(如下所述)

不要提交一些可能破坏trunk的内容,例如从branch合并

如果你在某些时候偶然间破坏了trunk,就需要进行版本回退保持trunk干净,不要让trunk目录的项目被污染。

branches

一个branch就是从一个SVN仓库中的子树所作的一份普通拷贝。通常情况它的工作类似与UNIX系统上的符号链接,但是你一旦在一个SVNbranch里修改了一些文件,并且这些被修改的文件从拷贝过来的源文件独立发展,就不能这么认为了。当一个branch完成了,并且认为它足够稳定的时候,它必须合并回它原来的拷贝的地方,也就是说:如果原来是从trunk中拷贝的,就应该回到trunk去,或者合并回它原来拷贝的父级branch。

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

如果你需要修改你的应用程序,或者为它开发一个新的特性,请从trunk中创建一个新的branch,然后基于这个新的分支进行开发

除非是因为必须从一个branch中创建一个新的子branch,否则新的branch必须从trunk创建

当你创建了一个新branch,你应当立即切换过去。如果你没有这么做,那你为什么要在最初的地方创建这个分支呢?

tags

从表面上看,SVNbranches和SVNtags没有什么差别,但是从概念上来说,它们有许多差别。其实一个SVNtags就是上文所述的“为这棵树照张相”:一个trunk或者一个branch修订版的命名快照。

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

作为一个开发者,永远不要切换至、取出,或者向一个SVNtag提交任何内容:一个tag好比某种“照片”,并不是实实在在的东西,tags只可读,不可写。

在特殊或者需要特别注意的环境中,如:生产环境(production)、?(staging)、测试环境(testing)等等,只能从一个修复过的(fixed)tag中checkout和update,永远不要commit至一个tag。

对于上述提及到的环境,可以创建如下的tags:“production”,“staging”,“testing”等等。你也可以根据软件版本、项目的成熟程度来命名tag:“1.0.3”,“stable”,“latest”等等。

当trunk已经稳定,并且可以对外发布,也要相应地重新创建tags,然后再更新相关的环境

工作流程样例

假设你必须添加了一个特性至一个项目,且这个项目是受版本控制的,你差不多需要完成如下几个步骤:

使用SVNcheckout或者SVNswitch从这个项目的trunk获得一个新的工作拷贝(branch)

使用SVN切换至新的branch

完成新特性的开发(当然,要做足够的测试,包括在开始编码前)

一旦这个特性完成并且稳定(已提交),并经过你的同事们确认,切换至trunk

合并你的分支至你的工作拷贝(trunk),并且解决一系列的冲突

重新检查合并后的代码

如果可能的话,麻烦你的同事对你所编写、更改的代码进行一次复查(review)

提交合并后的工作拷贝至trunk

如果某些部署需要特殊的环境(生成环境等等),请更新相关的tag至你刚刚提交到trunk的修订版本,使用SVNupdate部署至相关环境

详解SVN中trunk、branches、tag的使用相关推荐

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

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

  2. 理解SVN中trunk,branches,tags

    2019独角兽企业重金招聘Python工程师标准>>> Subversion有一个很标准的目录结构: project +-- trunk +-- branches +-- tags  ...

  3. 详解eNSP中Trunk端口和Access端口收发数据的区别

    Access和Trunk端口收发数据的区别 端口类型 接收数据 转发数据 Access端口 如果接收的是不带标签的的数据,则打上自己的pvid接受该数据,如果接受的是带标签的数据,会判断该数据的vla ...

  4. SVN的trunk branch tag

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

  5. mysql的json函数与实例_Mysql实例详解Mysql中的JSON系列操作函数

    <Mysql实例详解Mysql中的JSON系列操作函数>要点: 本文介绍了Mysql实例详解Mysql中的JSON系列操作函数,希望对您有用.如果有疑问,可以联系我们. MYSQL必读前言 ...

  6. vlan标签详解 access、trunk和hybrid的区别

    vlan标签详解 access.trunk和hybrid的区别 我们知道,不同网段间需要通过路由转发才能通信: 那在同一网段不同vlan之间的PC,是不能互相通信的.其实这并不是绝对的.了解vlan的 ...

  7. 详解OpenCV中的Lucas Kanade稀疏光流单应追踪器

    详解OpenCV中的Lucas Kanade稀疏光流单应追踪器 1. 效果图 2. 源码 参考 这篇博客将详细介绍OpenCV中的Lucas Kanade稀疏光流单应追踪器. 光流是由物体或相机的运动 ...

  8. python操作目录_详解python中的文件与目录操作

    详解python中的文件与目录操作 一 获得当前路径 1.代码1 >>>import os >>>print('Current directory is ',os. ...

  9. python3中unicode怎么写_详解python3中ascii与Unicode使用

    这篇文章主要为大家详解python3中ascii与Unicode使用的相关资料,需要的朋友可以参考下# Auther: Aaron Fan ''' ASCII:不支持中文,1个英文占1个字节 Unic ...

  10. foreach php,详解PHP中foreach的用法和实例

    本篇文章介绍了详解PHP中foreach的用法和实例,详细介绍了foreach的用法,感兴趣的小伙伴们可以参考一下. 在PHP中经常会用到foreach的使用,而要用到foreach,就必须用到数组. ...

最新文章

  1. android源码framework下添加新资源的方法
  2. vue中页面跳转传值_vue的页面跳转方式和传值、取值
  3. 历史上唯独倒闭的两家银行,看看他们是如何破产的
  4. a说b说谎b说c说谎说d说_说谎的眼睛及其同伙
  5. SQLServer 事物与索引
  6. 白皮书丨关于工业互联网,你想知道的都在这儿
  7. 在 linux 下安装 Mysql 的详细过程
  8. h5页面编写注意事项,自己遇到的小问题。
  9. hdmi 屏幕旋转 树莓派_使用树莓派的轻量级远征工具套装
  10. 饭卡管理系统mysql_数据库饭卡管理系统.doc
  11. 相遇在这茫茫的网海里。你在天涯,我在海角
  12. Android系统开启蓝牙源码分析(上)
  13. Chrome 添加自定义搜索引擎
  14. HP 暗夜精灵2 pro 拆机加内存
  15. 某企业发放的奖金根据利润进行提成,利润低于或等于10万元时,奖金为利润的10%;利润高于10万元低于20万元时,低于10万元部分,奖金按利润的10%提成。。。。。。
  16. Linux 系统的基本使用
  17. linux开机自启动程序设置方法
  18. 现代人的困扰,“高刺激”的诱惑
  19. Excel中引用方法
  20. python迷你停车管理系统_建议收藏,22个Python迷你项目(附源码)

热门文章

  1. animation动画不生效_css animation不动怎么办
  2. sublime去掉空行 sublime批量删除空白行
  3. vue学习日记(流水账
  4. 服务器usb驱动安装系统安装失败怎么办,USB3.0驱动无法安装失败怎么办?USB驱动失败失败的解决方法...
  5. H3C S5820x 期望风道方向的注意事项
  6. Python查询四六级成绩
  7. 浅论程序员的工作经历与工作经验
  8. 2020-21《全球软件质量报告》解读
  9. php展厅控制系统,展厅中控系统
  10. 百度2014校园招聘-研发工程师笔试题(济南站)