`

SVN — svn中的branch和tag

阅读更多

在SVN中Branch/tag在一个功能选项中,在使用中也往往产生混淆。

在实现上,branch和tag,对于svn都是使用copy实现的,所以他们在默认的权限上和一般的目录没有区别。至于何时用tag,何时用branch,完全由人主观的根据规范和需要来选择,而不是强制的(比如cvs)。

一般情况下,
tag,是用来做一个milestone的,不管是不是release,都是一个可用的版本。这里,应该是只读的。更多的是一个显示用的,给人一个可读(readable)的标记。
branch,是用来做并行开发的,这里的并行是指和trunk进行比较。

比如,3.0开发完成,这个时候要做一个tag,tag_release_3_0,然后基于这个tag做release,比如安装程序等。trunk进入3.1的开发,但是3.0发现了bug,那么就需要基于tag_release_3_0做一个branch,branch_bugfix_3_0,基于这个branch进行bugfix,等到bugfix结束,做一个tag,tag_release_3_0_1,然后,根据需要决定branch_bugfix_3_0是否并入trunk。

对于svn还要注意的一点,就是它是全局版本号,其实这个就是一个tag的标记,所以我们经常可以看到,什么什么release,基于xxx项目的2xxxx版本。就是这个意思了。但是,它还明确的给出一个tag的概念,就是因为这个更加的可读,毕竟记住tag_release_1_0要比记住一个很大的版本号容易的多。

 

branches:分枝

当多个人合作,可能有这样的情况出现:John突然有个想法,跟原先的设计不太一致,可能是功能的添加或者日志格式的改进等等,总而言之,这个想法可能需要花一段时间来完成,而这个过程中,John的一些操作可能会影响Sally的工作,John从现有的状态单独出一个project的话,又不能及时得到Sally对已有代码做的修正,而且独立出来的话,John的尝试成功时,跟原来的合并也存在困难。这时最好的实践方法是使用branches。John建立一个自己的branch,然后在里面实验,必要的时候从Sally的trunk里取得更新,或者将自己的阶段成果汇集到trunk中。

(svn copy SourceURL/trunk DestinationURL/branchName -m "Creating a private branch of xxxx/trunk." )

trunk:主干

主干,一般来说就是开发的主要呆的地方,

tag:

在经过了一段时间的开发后,项目到达了一个里程碑阶段,你可能想记录这一阶段的代码的状态,那么你就需要给代码打上标签。

(svn cp file:///svnroot/mojavescripts/trunk file:///svnroot/mojavescripts/tags/mirrorutils_rel_0_0_1
-m "taged mirrorutils_rel_0_0_1")

另有一说,无所谓谁对谁错。

trunk:表示开发时版本存放的目录,即在开发阶段的代码都提交到该目录上。

branches:表示发布的版本存放的目录,即项目上线时发布的稳定版本存放在该目录中。

tags:表示标签存放的目录。

在这需要说明下分三个目录的原因,如果项目分为一期、二期、三期等,那么一期上线时的稳定版本就应该在一期完成时将代码copy到branches上,这样二期开发的代码就对一期的代码没有影响,如新增的模块就不会部署到生产环境上。而branches上的稳定的版本就是发布到生产环境上的代码,如果用户使用的过程中发现有bug,则只要在branches上修改该bug,修改完bug后再编译branches上最新的代码发布到生产环境即可。tags的作用是将在branches上修改的bug的代码合并到trunk上时创建个版本标识,以后branches上修改的bug代码再合并到trunk上时就从tags的version到branches最新的version合并到trunk,以保证前期修改的bug代码不会再合并。

分享到:
评论

相关推荐

    SVN trunk, branch, tag merge 等的应用

    SVN(Subversion)是一种广泛使用的版本控制系统,它的核心概念包括trunk、branch和tag,这些都是进行协同开发和代码管理的重要元素。下面将详细解释这些概念以及它们在实际项目中的应用。 1. **Trunk**:Trunk通常...

    在SVN中使用分支/Branch进行版本控制

    ### 在SVN中使用分支/Branch进行版本控制 #### 1. 名词缩略语释义 在探讨如何在Subversion (SVN) 中利用分支进行版本控制之前,我们首先需要理解一些基本术语。 - **PCM** (Project Configuration Manager): 项目...

    4.1、SVN trunk(主线) branch(分支) tag(标记) 1

    本文将深入探讨 SVN 中的 trunk、branch 和 tag 三个核心概念,以及它们在实际开发场景中的应用。 首先,trunk(主干或主线)是项目的主要开发分支,代表了项目的最新稳定状态。新功能的开发通常在这个分支上进行,...

    SVN版本控制方案

    - 特殊环境如生产环境、测试环境等只能从修复过的Tag中checkout和update; - 根据软件版本或项目状态命名Tag,如"1.0.3"、"stable"等; - 当Trunk稳定并对外发布时,应重新创建Tag,并更新相关环境。 #### 三、...

    svn_主干(trunk)_分支(branck)_标记(tag)的原理及操作

    在SVN中,"trunk"、"branch"和"tag"是三个核心概念,用于组织项目的不同开发阶段和版本。 标题所指的“主干(trunk)”、“分支(branch)”和“标记(tag)”,是指版本控制中的三个关键组成部分。它们分别代表...

    SVN中的Branches分支以及Tags标签详解与应用举例

    创建 Branch 分支或者 Tag 标签非常容易,只需要在 TortoiseSVN 中创建对应的文件夹,然后将其提交到 SVN 服务器中。例如,创建一个名为 v1.0 的分支,用于发布一个版本的文件。 Branches 分支的修改和使用 Merge ...

    SVN 主干(trunk)、分支(branch )、标记(tag)

    资源中有 SVN 主干(trunk)、分支(branch )、标记(tag) 的详细解释,和作用 并带 SVN分支与合并 的详细操作文档(附图)。 SVN分支与合并的总结 1.分支(branche)的创建。 1、分支创建是建立在主干上的。 2、创建...

    SVN的标准目录结构:trunk、branches、tags

    当需要建立 branch 或 tag 时,可以使用 SVN 中的 copy 操作,例如,从 trunk 中 copy 到 branches 中,或者从 trunk 中 copy 到 tags 中。 权限控制 在 SVN 中,可以使用 authz 文件控制目录的访问权限。例如,...

    SVN 安装包+中文插件

    - **Branch/Tag**:创建项目副本(分支或标签),用于平行开发或保存特定版本。 此外,TortoiseSVN还提供了强大的右键菜单功能,用户可以直接在文件或文件夹上右键单击,选择SVN操作,无需打开单独的界面。这使得...

    SVN中文教程 SVN简明教程 SVN学习笔记

    - **Branch(分支)**和**Tag(标签)**:用于支持灵活的开发策略,分支用于并行开发,标签用于标记特定版本。 4. **SVN协同工作流程** - 开发者先从仓库检出最新代码到本地。 - 在本地完成代码修改后,进行`svn...

    TortoiseSVN,SVN安装包附中文插件

    6. **分支(Branch)和标签(Tag)**:分支允许开发人员在不影响主开发线的情况下进行实验性开发。标签是仓库的一个快照,用于标记特定版本。 **TortoiseSVN的特色功能** 1. **右键菜单集成**:在Windows资源管理...

    SVN客户端 64位 包含中文包

    8. **分支和标签(Branch & Tag)**:创建分支进行实验性开发,标签用于标记重要的里程碑。 总之,这个64位的SVN客户端包含中文包,为用户提供了一种高效、易用的工具来管理他们的代码版本,尤其适合中国开发者和...

    svn中文帮助文档

    SVN(Subversion)是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件。这个“svn中文帮助文档”提供了一套完整的中文指南,方便中国用户理解和使用SVN。以下是该文档可能涵盖的关键知识点: 1. **...

    SVN1.9.5 安装软件和中文安装包

    - **标签(Tag)**:标记仓库中的某个特定状态,常用于发布里程碑或版本。 SVN1.9.5版可能包含的改进和特性: - 提高了性能,尤其是在大型仓库或网络连接慢的环境下。 - 修复了前一版本中的已知问题,提高稳定性。 -...

    SVN版本控制系统

    - Branch/Tag:创建分支或标签,分支用于长期并行开发,标签用于标记特定版本。 4. SVN仓库管理: SVN仓库是存储所有版本历史的地方。管理员可以通过WebDAV协议提供仓库访问,或者通过SVN命令行工具进行权限管理...

    SVN(含中文)

    SVN,全称为Subversion,是一款广泛应用于软件版本控制系统中的开源工具,主要用于管理代码库,追踪文件和目录的变更,支持多人协作开发。在IT行业中,SVN是开发者团队进行协同工作的重要基础设施,确保了代码的一致...

    SVN的Delphi扩展和SVN的安装和配置

    Subversion(简称SVN)是一种广泛使用的版本控制系统,用于管理软件开发中的源代码和其他文件。在Delphi环境中,开发者经常需要集成SVN工具以便进行版本控制,提高协作效率。本文将详细介绍如何安装、配置SVN以及...

    svn插件myeclipse+svn插件

    - SVN还支持标签(Tag)和分支(Branch)功能,便于创建项目版本和进行平行开发。在MyEclipse中,这些操作同样可以通过“Team”菜单实现。 - 我们还可以使用SVN的“Revert”功能撤销本地未提交的更改,或者使用...

    svn中文包1.10.1.28295-x64

    SVN,全称为Subversion,是一款广泛应用于软件版本控制系统中的开源工具。它允许开发者在项目的整个开发周期中管理和跟踪代码的变化,确保团队协作时代码的一致性和完整性。1.10.1.28295是SVN的一个特定版本,这个...

    SVN中文翻译教程

    Subversion(简称SVN)是一种版本控制系统,用于管理软件项目中的文件和目录。它记录了文件和目录的历史更改,允许团队成员协同工作,同时跟踪各自的修改,防止数据丢失或冲突。本教程将详细介绍SVN的基本概念、安装...

Global site tag (gtag.js) - Google Analytics