在实现上,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(Subversion)是一种广泛使用的版本控制系统,它的核心概念包括trunk、branch和tag,这些都是进行协同开发和代码管理的重要元素。下面将详细解释这些概念以及它们在实际项目中的应用。 1. **Trunk**:Trunk通常...
- 特殊环境如生产环境、测试环境等只能从修复过的Tag中checkout和update; - 根据软件版本或项目状态命名Tag,如"1.0.3"、"stable"等; - 当Trunk稳定并对外发布时,应重新创建Tag,并更新相关环境。 #### 三、...
创建 Branch 分支或者 Tag 标签非常容易,只需要在 TortoiseSVN 中创建对应的文件夹,然后将其提交到 SVN 服务器中。例如,创建一个名为 v1.0 的分支,用于发布一个版本的文件。 Branches 分支的修改和使用 Merge ...
本文将深入探讨 SVN 中的 trunk、branch 和 tag 三个核心概念,以及它们在实际开发场景中的应用。 首先,trunk(主干或主线)是项目的主要开发分支,代表了项目的最新稳定状态。新功能的开发通常在这个分支上进行,...
当需要建立 branch 或 tag 时,可以使用 SVN 中的 copy 操作,例如,从 trunk 中 copy 到 branches 中,或者从 trunk 中 copy 到 tags 中。 权限控制 在 SVN 中,可以使用 authz 文件控制目录的访问权限。例如,...
资源中有 SVN 主干(trunk)、分支(branch )、标记(tag) 的详细解释,和作用 并带 SVN分支与合并 的详细操作文档(附图)。 SVN分支与合并的总结 1.分支(branche)的创建。 1、分支创建是建立在主干上的。 2、创建...
- **Branch(分支)**和**Tag(标签)**:用于支持灵活的开发策略,分支用于并行开发,标签用于标记特定版本。 4. **SVN协同工作流程** - 开发者先从仓库检出最新代码到本地。 - 在本地完成代码修改后,进行`svn...
- **Branch/Tag**:创建项目副本(分支或标签),用于平行开发或保存特定版本。 此外,TortoiseSVN还提供了强大的右键菜单功能,用户可以直接在文件或文件夹上右键单击,选择SVN操作,无需打开单独的界面。这使得...
SVN(Subversion)是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件。这个“svn中文帮助文档”提供了一套完整的中文指南,方便中国用户理解和使用SVN。以下是该文档可能涵盖的关键知识点: 1. **...
Subversion(简称SVN)是一种版本控制系统,用于管理软件项目中的文件和目录。它记录了文件和目录的历史更改,允许团队成员协同工作,同时跟踪各自的修改,防止数据丢失或冲突。本教程将详细介绍SVN的基本概念、安装...
6. **分支(Branch)和标签(Tag)**:分支允许开发人员在不影响主开发线的情况下进行实验性开发。标签是仓库的一个快照,用于标记特定版本。 **TortoiseSVN的特色功能** 1. **右键菜单集成**:在Windows资源管理...
- Branch/Tag:创建分支或标签,分支用于长期并行开发,标签用于标记特定版本。 4. SVN仓库管理: SVN仓库是存储所有版本历史的地方。管理员可以通过WebDAV协议提供仓库访问,或者通过SVN命令行工具进行权限管理...
在Eclipse中,可以右键点击项目,选择“Team” > “Branch/Tag”来创建新的分支或标签。 7. **日志查看**:Eclipse SVN插件还提供了查看版本历史的功能,开发者可以查看每个文件或目录的修改记录,了解是谁在何时做...
8. **分支和标签(Branch & Tag)**:创建分支进行实验性开发,标签用于标记重要的里程碑。 总之,这个64位的SVN客户端包含中文包,为用户提供了一种高效、易用的工具来管理他们的代码版本,尤其适合中国开发者和...
SVN,全称为Subversion,是一款广泛应用于软件版本控制系统中的开源工具,主要用于管理代码库,追踪文件和目录的变更,支持多人协作开发。在IT行业中,SVN是开发者团队进行协同工作的重要基础设施,确保了代码的一致...
- 在弹出的“Copy (Branch/Tag)”对话框中,设置目标 URL 为分支路径(如`svn://localhost/project/branches`),点击“OK”。 4. **切换工作副本到分支**: - 右键点击项目,选择“Team” -> “Switch to ...
Subversion(简称SVN)是一种广泛使用的版本控制系统,用于管理软件开发中的源代码和其他文件。在Delphi环境中,开发者经常需要集成SVN工具以便进行版本控制,提高协作效率。本文将详细介绍如何安装、配置SVN以及...
- **标签(Tag)**:标记仓库中的某个特定状态,常用于发布里程碑或版本。 SVN1.9.5版可能包含的改进和特性: - 提高了性能,尤其是在大型仓库或网络连接慢的环境下。 - 修复了前一版本中的已知问题,提高稳定性。 -...