百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

IT初学者怎么理解SVN中trunk、branches、tag的使用

yuyutoo 2024-10-13 09:12 5 浏览 0 评论

我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我就摘录一篇文章来简单说明SVN里的trunk,branched,tags这个三个文件目录的用法。

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

——简单的对比

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

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

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

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

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

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

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

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

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

——Trunk

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

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

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

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

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

如果你在某些时候偶然间破坏了trunk,bringsomecakethenextday(”withgreatresponsibilitiescome…hugecakes”)

——Branches

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

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

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

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

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

——Tags

SVN组成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,然后再更新相关的环境(production,staging,etc)

——工作流样例

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

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

使用SVN切换至新的branch

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

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

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

重新检查合并后的代码

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

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

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

  1. 简介
  2. 我们都知道SVN是管理项目源代码的软件,可以把我们开发中的各个阶段的代码记录下来,供我们以后来使用,那么SVN具体的结构你是否知道呢?下面我们来介绍一下它的基本结构
  3. Trunk、Branches、Tags、作用
  4. Trunk
  5. 这是SVN目录的主分支,表示日常开发中的项目,任何时候Trunk里包含的都是最新的开发代码。 这里的代码将会工作到你的下一个主要发布版本。
  6. Trunk应该只被用来开发将会成为你的下一个重要版本的代码。
  7. 几乎常常人们只使用trunk来存放他们的代码。发放了一个版本后继续在其上进行下一版开发。这样开发是混论的,如果出现大的Bug往往不好恢复到之前版本,因此,增加了一个Branches文件
  8. Branches
  9. 常用的Branches分支有好几种类型,这里列出常用的几种。
  10. Release Branches
  11. 当trunk达到准备发布的阶段时(或者你想冻结新特色的添加时),你应该创建一个release branches。
  12. Bug fix branches
  13. 分支也可以用于处理trunk或release branches里发现的严重的Bug。
  14. Experimental branches
  15. 有时你想将某个新技术引进项目。这很好,但是你当然不想赌上你的整个项目。想象一下,你想把你的Web程序从PHP4改为PHP5。你要花多少时间?在这期间你的trunk停止使用?直到你把所有到PHP5的转换做完
  16. Tags
  17. 一般情况下,tag,是用来做一个milestone的,不管是不是release,都是一个可用的版本。这里,应该是只读的。
  18. 在SVN中Tag和Branches,在一个选项里面创建时区别不明显,Tags中存放的也是Trunk的一个副本,只不过是只读的,不可以修改,权限不同。
  19. Trunk、Branches、Tags详细使用
  20. Trunk
  21. 文件夹中右键,选“Create repository here”

  1. 选择“Create folder Structure”,然后,浏览建好的文件结构

  1. Branches
  2. Create
  3. Merge
  4. Branches To Trunk
  5. 这种方式用的最多,属于常用的一种。
  6. 在Trunk中,选中UI文件夹,右键

  1. 如下图,选择”merge”

  1. 选择“Merge a range of revisions”

  1. 选择要合并的目录,这里选择branches中UI文件夹

  1. 合并完成

  1. Trunk To Branches
  2. Branches To Branches
  3. Tags
  4. 标记同branches类似,同上.
  5. 意义
  6. SVN解决了我们数据备份、 版本控制、 数据同步等面对的问题,因而深受很多人喜爱和使用,它是一个不错的管理知识的软件工具。
  7. 我们自己也可以用SVN管理我们的知识。

相关推荐

如何在HTML中使用JavaScript:从基础到高级的全面指南!

“这里是云端源想IT,帮你...

推荐9个Github上热门的CSS开源框架

大家好,我是Echa。...

前端基础知识之“CSS是什么?”_前端css js

...

硬核!知网首篇被引过万的论文讲了啥?作者什么来头?

整理|袁小华近日,知网首篇被引量破万的中文论文及其作者备受关注。知网中心网站数据显示,截至2021年7月23日,由华南师范大学教授温忠麟等人发表在《心理学报》2004年05期上的学术论文“中介效应检验...

为什么我推荐使用JSX开发Vue3_为什么用vue不用jquery

在很长的一段时间中,Vue官方都以简单上手作为其推广的重点。这确实给Vue带来了非常大的用户量,尤其是最追求需求开发效率,往往不那么在意工程代码质量的国内中小企业中,Vue占据的份额极速增长...

【干货】一文详解html和css,前端开发需要哪些技术?
【干货】一文详解html和css,前端开发需要哪些技术?

网站开发简介...

2025-02-20 18:34 yuyutoo

分享几个css实用技巧_cssli

本篇将介绍几个css小技巧,目录如下:自定义引用标签的符号重置所有标签样式...

如何在浏览器中运行 .NET_怎么用浏览器运行代码

概述:...

前端-干货分享:更牛逼的CSS管理方法-层(CSS Layers)

使用CSS最困难的部分之一是处理CSS的权重值,它可以决定到底哪条规则会最终被应用,尤其是如果你想在Bootstrap这样的框架中覆盖其已有样式,更加显得麻烦。不过随着CSS层的引入,这一...

HTML 基础标签库_html标签基本结构
HTML 基础标签库_html标签基本结构

HTML标题HTML标题(Heading)是通过-...

2025-02-20 18:34 yuyutoo

前端css面试20道常见考题_高级前端css面试题

1.请解释一下CSS3的flexbox(弹性盒布局模型),以及适用场景?display:flex;在父元素设置,子元素受弹性盒影响,默认排成一行,如果超出一行,按比例压缩flex:1;子元素设置...

vue引入外部js文件并使用_vue3 引入外部js

要在Vue中引入外部的JavaScript文件,可以使用以下几种方法:1.使用``标签引入外部的JavaScript文件。在Vue的HTML模板中,可以直接使用``标签来引入外部的JavaScrip...

网页设计得懂css的规范_html+css网页设计

在初级的前端工作人员,刚入职的时候,可能在学习前端技术,写代码不是否那么的规范,而在工作中,命名的规范的尤为重要,它直接与你的代码质量挂钩。网上也受很多,但比较杂乱,在加上每年的命名都会发生一变化。...

Google在Chrome中引入HTML 5.1标记

虽然负责制定Web标准的WorldWideWebConsortium(W3C)尚未宣布HTML5正式推荐规格,而Google已经迁移到了HTML5.1。即将发布的Chrome38将引入H...

HTML DOM 引用( ) 对象_html中如何引用js

引用对象引用对象定义了一个同内联元素的HTML引用。标签定义短的引用。元素经常在引用的内容周围添加引号。HTML文档中的每一个标签,都会创建一个引用对象。...

取消回复欢迎 发表评论: