`
famoushz
  • 浏览: 2963438 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

svn中的branch和tag

阅读更多

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

<!-- 设定空白层。1px宽-->
<script src="http://www.svn8.com/plus/ad_js.php?aid=17"></script><script type="text/javascript"> cpro_client='moqiwanshi_cpr'; cpro_at='text_image'; cpro_161=3; cpro_flush=4; cpro_w=250; cpro_h=250; cpro_template='text_default_250_250'; cpro_cbd='#FFFFFF'; cpro_cbg='#FFFFFF'; cpro_ctitle='#0000ff'; cpro_cdesc='#444444'; cpro_curl='#008000'; cpro_cflush='#e10900'; cpro_uap=1; cpro_cad=1; </script><script src="http://cpro.baidu.com/cpro/ui/cp.js" type="text/javascript"></script>
-
在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代码不会再合并。

轉自:

http://hi.baidu.com/stevenchan/blog/item/bb70c1951b576d4dd1135e3a.html

http://hi.baidu.com/cc0cc/blog/item/f68cb0581e86add99d82043d.html

分享到:
评论

相关推荐

    SVN trunk, branch, tag merge 等的应用

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

    SVN版本控制方案

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

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

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

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

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

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

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

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

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

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

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

    SVN 安装包+中文插件

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

    svn中文帮助文档

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

    SVN中文翻译教程

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

    TortoiseSVN,SVN安装包附中文插件

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

    SVN版本控制系统

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

    eclipse svn中文插件

    在Eclipse中,可以右键点击项目,选择“Team” &gt; “Branch/Tag”来创建新的分支或标签。 7. **日志查看**:Eclipse SVN插件还提供了查看版本历史的功能,开发者可以查看每个文件或目录的修改记录,了解是谁在何时做...

    SVN客户端 64位 包含中文包

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

    SVN(含中文)

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

    SVN主干和分支操作

    - 在弹出的“Copy (Branch/Tag)”对话框中,设置目标 URL 为分支路径(如`svn://localhost/project/branches`),点击“OK”。 4. **切换工作副本到分支**: - 右键点击项目,选择“Team” -&gt; “Switch to ...

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

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

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

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

Global site tag (gtag.js) - Google Analytics