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要比记住一个很大的版本号容易的多。
svn中建立branch或者tag的方法比较简单,totoiseSVN中的操作是:
1.选择Branch/tag..
2.在出来的界面中的To URL中填上URL,一般是svn://IP/Project/branches/branch-1, 这样就建立了一个branch-1的branch. 建立tag是一样的操作,只不过URL一般是svn://IP/Project/tags/tag-1
3.后面的Create copy from是用于选择从你当前的working base中的哪个版本中建立branch/tag,可以根据自己的选择来订制,一般选择Head Revision
subclipse中几乎是一样的操作。
Merge分为很多种:
1.多个branch之间merge
2.branch merge到trunk
3.trunk merge到branch
第2种用的比较多,比如在otfs接口中netamount的需求提出后就得建立一个netamount的branch,trunk继续在非netamount的情况下继续开发,netamount单独开发,当netamount功能测试通过后,将netamount branch merge到trunk下,然后将trunk release。
第3种情况用的也不少,如上的例子,当用户进行netamount测试时,如果用户不想只测试netamount的功能,则需要将trunk中的修改merge到netamount branch,然后从netamount branch中发布一个版本供用户测试。
branch merge to trunk在tortoiseSVN操作如下:
1.选择TortoiseSVN->Merge
2.选择Reintegrate a branch
3.选择From URL,URL填好之后可以点击Show Log,可以看看这个branch是否是你要merge的内容,下面的Working copy中也可以Show Log,可以确认一下你的工作目录是否是trunk。确认后点击Next
4.Merge Options里面有些选项,根据需要来选择,Test Merge按钮会告诉你这次Merge会做哪些操作,最好先Test Merge一下!如果是预期的Merge操作,点击Merge则可以将branch Merge到本地工作目录下
5.有冲突的文件需要解决好冲突,解决之后点击svn commit则完成了merge
从多个revision中merge到本地工作目录在tortoiseSVN的操作如下:
1.选择TortoiseSVN->Merge
2.选择Merge a range of revisions
3.URL to merge from填上merge的来源,merge 来源一般和你的working copy是不同的branch或者working copy是trunk 而merge from是branch
4.Revision range to merge填上需要merge的revision,格式是1,3,5或者 1-10
5.后续操作同Reintegrate a branch
subclipse进行Merge操作同tortoiseSVN的操作方式有所区别,原理基本同Merge a range of revisions。
点击Team->Merge后,只有一个界面,这个界面提供了两种Merge操作方式:
1.Merge某个版本范围内的修改到本地工作目录上
2.Merge feature branch到trunk (也需要先merge到本地)
第1种的操作方法是:
1.在from url中填上branch的url
2.from revision中选择建立这个branch的revision号,不是最新的那个版本号!
3.to url框中勾上"Use 'From:' URL"这个check box, To Revision中选择需要需要Merge到的revision号,一般勾head revision
4.Dry run让你预览一下merge效果,Unified Diff将Merge的两边进行Diff并将Diff结果保存到文件中。(在我机器中Dry run没有窗口出来,diff结果的文件除非只有很小的变化,不然看得头大)
5.点击Merge将merge到本地,这时候与版本库进行一下同步应该和上一步的dry run有同样的效果,如果merge过来的东西不是你预期的更改可以选择revert,但是新增的文件需要手工删除!如果是预期的merge效果,那commit,记得在comments中写上merge来的branch、from revision、to revision(不要写head,写数字)
总的来看subclipse的merge操作并不方便,不如tortoiseSVN
转自:http://cddcdd.javaeye.com/blog/353146
http://eyejava.javaeye.com/blog/308411
分享到:
相关推荐
创建 Branch 分支或者 Tag 标签非常容易,只需要在 TortoiseSVN 中创建对应的文件夹,然后将其提交到 SVN 服务器中。例如,创建一个名为 v1.0 的分支,用于发布一个版本的文件。 Branches 分支的修改和使用 Merge ...
SVN(Subversion)是一种广泛使用的版本控制系统,它的核心概念包括trunk、branch和tag,这些都是进行协同开发和代码管理的重要元素。下面将详细解释这些概念以及它们在实际项目中的应用。 1. **Trunk**:Trunk通常...
通过对SVN中Trunk、Branch、Tag的概念及使用方法的介绍,我们可以更好地理解如何高效地使用SVN来进行版本控制。遵循这些约定能够有效提升团队协作效率,减少代码冲突,确保项目的稳定性和可持续发展。
- 命令:`svn copy /url/to/repo/path /url/to/repo/tags/tagname -m "create tag"` - 示例:`svn copy file:///opt/svn/project/trunk file:///opt/svn/project/tags/v1.0 -m "Create v1.0 tag"` 13. **提交到...
本文将深入探讨 SVN 中的 trunk、branch 和 tag 三个核心概念,以及它们在实际开发场景中的应用。 首先,trunk(主干或主线)是项目的主要开发分支,代表了项目的最新稳定状态。新功能的开发通常在这个分支上进行,...
资源中有 SVN 主干(trunk)、分支(branch )、标记(tag) 的详细解释,和作用 并带 SVN分支与合并 的详细操作文档(附图)。 SVN分支与合并的总结 1.分支(branche)的创建。 1、分支创建是建立在主干上的。 2、创建...
- **Tag/branch**:用于创建基线。 #### 五、解决冲突 在进行更新或合并操作时,经常会遇到冲突的情况。解决冲突通常有两种方法: 1. **直接在文件上修改**:打开冲突文件,手动编辑冲突部分,删除冲突标记,然后...
- 在弹出的“Copy (Branch/Tag)”对话框中,设置目标 URL 为分支路径(如`svn://localhost/project/branches`),点击“OK”。 4. **切换工作副本到分支**: - 右键点击项目,选择“Team” -> “Switch to ...
当需要建立 branch 或 tag 时,可以使用 SVN 中的 copy 操作,例如,从 trunk 中 copy 到 branches 中,或者从 trunk 中 copy 到 tags 中。 权限控制 在 SVN 中,可以使用 authz 文件控制目录的访问权限。例如,...
除此之外,Subversion还支持分支和标签(Branch and Tag)。分支允许开发团队在不影响主干(trunk)的情况下进行实验性开发,而标签则用于创建项目在特定时间点的快照,通常用于发布版本。 Subversion的另一个重要...
- **Branch/Tag**:创建项目副本(分支或标签),用于平行开发或保存特定版本。 此外,TortoiseSVN还提供了强大的右键菜单功能,用户可以直接在文件或文件夹上右键单击,选择SVN操作,无需打开单独的界面。这使得...
1. 分支(Branch):用于隔离开发,`svn copy`命令创建分支,如`svn copy file:///C:/SVN/repos/myproject file:///C:/SVN/repos/myproject/branch1`。 2. 标签(Tag):标记特定版本,常用于发布,`svn copy`同样...
- **创建分支**:在 `trunk` 的 `examples1` 目录中选择 “Branch/tag”,然后指定分支路径为 `branches/examples1` 并添加相应的注释信息。 ```bash # 创建分支 svn copy ...
在SVN中,`trunk`、`branch`和`tag`是三个核心概念,它们各自有不同的用途: 1. **Trunk(主干)**: - Trunk是项目的主线或主分支,通常代表项目当前的开发状态。开发人员通常在这里进行日常的开发工作,每次提交...
- **Branch(分支)**和**Tag(标签)**:用于支持灵活的开发策略,分支用于并行开发,标签用于标记特定版本。 4. **SVN协同工作流程** - 开发者先从仓库检出最新代码到本地。 - 在本地完成代码修改后,进行`svn...
八、SVN与Git的比较 虽然两者都是版本控制系统,但Git更注重分布式开发,而SVN则以集中式为主。Git在分支管理和速度上有优势,而SVN更易于学习和部署。 九、协同开发实践 通过SVN,团队成员可以共享代码,追踪变更...
在Eclipse中,可以右键点击项目,选择“Team” > “Branch/Tag”来创建新的分支或标签。 7. **日志查看**:Eclipse SVN插件还提供了查看版本历史的功能,开发者可以查看每个文件或目录的修改记录,了解是谁在何时做...
在IT行业中,版本控制系统是开发团队协作不可或缺的工具,Subversion(简称SVN)就是其中的一种。本教程将详尽地介绍如何在MyEclipse集成开发环境中配置SVN插件,以便于团队成员能有效地管理和共享代码。 首先,...