SVN中trunk、branches、tag的使用

时间:2021-11-12 23:25:31
 我相信初学开发在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. 简介
    1. 我们都知道SVN是管理项目源代码的软件,可以把我们开发中的各个阶段的代码记录下来,供我们以后来使用,那么SVN具体的结构你是否知道呢?下面我们来介绍一下它的基本结构
  1. Trunk、Branches、Tags、作用
    1. Trunk
      1. 这是SVN目录的主分支,表示日常开发中的项目,任何时候Trunk里包含的都是最新的开发代码。 这里的代码将会工作到你的下一个主要发布版本。
      2. Trunk应该只被用来开发将会成为你的下一个重要版本的代码。
      3. 几乎常常人们只使用trunk来存放他们的代码。发放了一个版本后继续在其上进行下一版开发。这样开发是混论的,如果出现大的Bug往往不好恢复到之前版本,因此,增加了一个Branches文件
    1. Branches
      1. 常用的Branches分支有好几种类型,这里列出常用的几种。
      2. Release Branches
        1. 当trunk达到准备发布的阶段时(或者你想冻结新特色的添加时),你应该创建一个release branches。
      1. Bug fix branches
        1. 分支也可以用于处理trunk或release branches里发现的严重的Bug。
      1. Experimental branches
        1. 有时你想将某个新技术引进项目。这很好,但是你当然不想赌上你的整个项目。想象一下,你想把你的Web程序从PHP4改为PHP5。你要花多少时间?在这期间你的trunk停止使用?直到你把所有到PHP5的转换做完
    1. Tags
      1. 一般情况下,tag,是用来做一个milestone的,不管是不是release,都是一个可用的版本。这里,应该是只读的。
      2. 在SVN中Tag和Branches,在一个选项里面创建时区别不明显,Tags中存放的也是Trunk的一个副本,只不过是只读的,不可以修改,权限不同。
  1. Trunk、Branches、Tags详细使用
    1. Trunk
      1. 文件夹中右键,选“Create repository here”
        1. SVN中trunk、branches、tag的使用
      1. 选择“Create folder Structure”,然后,浏览建好的文件结构
        1. SVN中trunk、branches、tag的使用
    1. Branches
      1. Create
      1. Merge
        1. Branches To Trunk
          1. 这种方式用的最多,属于常用的一种。
          2. 在Trunk中,选中UI文件夹,右键
            1. SVN中trunk、branches、tag的使用
          1. 如下图,选择”merge”
            1. SVN中trunk、branches、tag的使用
          1. 选择“Merge a range of revisions”
            1. SVN中trunk、branches、tag的使用
          1. 选择要合并的目录,这里选择branches中UI文件夹
            1. SVN中trunk、branches、tag的使用
          1. 合并完成
            1. SVN中trunk、branches、tag的使用
        1. Trunk To Branches
        1. Branches To Branches
    1. Tags
      1. 标记同branches类似,同上.
    1. 意义
      1. SVN解决了我们数据备份、 版本控制、 数据同步等面对的问题,因而深受很多人喜爱和使用,它是一个不错的管理知识的软件工具。
      1. 我们自己也可以用SVN管理我们的知识。

http://blog.csdn.net/lilongsheng1125/article/details/8742200

http://blog.sina.com.cn/s/blog_68b4c68f01019mbs.html

SVN中trunk、branches、tag的使用的更多相关文章

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

    原文地址:http://www.cnblogs.com/dafozhang/archive/2012/06/28/2567769.html Subversion有一个很标准的目录结构,是这样的.比如项 ...

  2. SVN中trunk,branches,tags用法详解(转载)

    转载出处:http://www.cnblogs.com/dafozhang/archive/2012/06/28/2567769.html Subversion是一个*开源的版本控制系统.在Subv ...

  3. SVN中trunk,branches,tags用法详解【转】

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

  4. SVN中trunk,branches,tags用法详解[重要]

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

  5. SVN中trunk,branches,tags的使用明细--项目代码的管理

    SVN在项目开发过程中有两种模式: 第一种:Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局svn://proj/|+ ...

  6. SVN中trunk、branches、tags用法详解

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

  7. SVN组成中trunk,branches and tags功能用法详解

    SVN组成中trunk,branches and tags功能用法详解  我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我就摘录一篇文章来简单说 ...

  8. SVN 中trunk、branches、tags

    SVN 中trunk.branches.tags   我们在一些著名开源项目的版本库中,通常可以看到trunk, branches, tags等三个目录.由于SVN固有的特点,目录在SVN中并没有特别 ...

  9. [转]SVN的trunk branch tag

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

随机推荐

  1. Design2:数据层次结构建模之二

    MSSql提供了一个新的数据类型 HierarchyID,用来处理层次结构的数据,这个数据类型是系统内置的CLR数据类型,不需要专门激活 SQL/CLR 功能即可使用.当需要表示各值之间的嵌套关系,并 ...

  2. 在 SQL Server 中查询EXCEL 表中的数据遇到的各种问题

    SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="D:\KK.xls";User ID=A ...

  3. Angular $http解析通过接口获得的json数据

    刚接触angular不久,对很多东西都不了解,今天需要用angular通过接口得到json数据,折腾了好久,总算是能获取到数据了,下面是部分源码,仅供参考: HTML部分: <body ng-a ...

  4. Git初始化与上传

    一: 现在git上Create个repository 二:进入要长传的工程目录打开git bash git initgit statusgit add .//add .的时候文件不要被占用. git ...

  5. 项目报错,tomcat中引起

    1.项目报错,但发现工程并没有错.此刻错误应该定位如下,即工程里面引用的jar可能有错,可能是路劲变了....

  6. 在COM组件中调用JS函数

    要求是很简单的,即有COM组件A在IE中运行,使用JavaScript(JS)调用A的方法longCalc(),该方法是一个耗时的操作,要求通知IE当前的进度.这就要求使用回调函数,设其名称为scri ...

  7. java第五次笔记

  8. FXML Stuffs &lpar;include and define&rpar;

    FXML Stuffs (include and define)Hello folks,Today I would like to blog about the FXML define and inc ...

  9. 连接到win2003的远程桌面,客户端要如何操作

    第一步:命令行执行mstsc 第二步:处输入开启了远程桌面功能的计算机IP地址.

  10. 多进程&plus;协程 处理IO问题

    from multiprocessing import Pool import gevent,os import time def recursion(n): if n == 1 or n ==2: ...