`
zwt2001267
  • 浏览: 444734 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

svn的branch/tag创建及merge

    博客分类:
  • svn
svn 
阅读更多

转自:http://blog.csdn.net/adupt/article/details/4203133

 

在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

分享到:
评论

相关推荐

    SVN trunk, branch, tag merge 等的应用

    综上所述,理解和熟练运用SVN的trunk、branch、tag以及merge机制对于软件开发团队来说至关重要,它们是实现高效协同开发、保持代码整洁有序的基础。同时,使用像"admintools"这样的辅助工具可以进一步提升SVN的管理...

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

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

    svn merge简单操作

    - **创建分支**:在 `trunk` 的 `examples1` 目录中选择 “Branch/tag”,然后指定分支路径为 `branches/examples1` 并添加相应的注释信息。 ```bash # 创建分支 svn copy ...

    eclipse中利用svn创建、合并、切换分支

    如果您还没有创建相应的目录,建议先在SVN仓库中创建好所需的目录结构。 - 选择`浏览资源库`后,在弹出的对话框中选择`branches`目录(或者您之前创建的其他分支目录)。然后在该目录后手动添加新的分支名称,通常...

    SVN.rar_svn

    1. 分支(Branch):用于隔离开发,`svn copy`命令创建分支,如`svn copy file:///C:/SVN/repos/myproject file:///C:/SVN/repos/myproject/branch1`。 2. 标签(Tag):标记特定版本,常用于发布,`svn copy`同样...

    SVN 配置管理使用教程

    - Linux下通过命令`svn mkdir trunk/branch/tag`来创建目录结构。 ##### 导入文件 - 可以使用`svn import`命令将本地文件导入到SVN仓库中。 ##### 文件操作 - 使用`svn checkout(co)`和`svn export`命令进行文件检...

    svn操作说明书-实践操作及原理

    ### SVN操作说明书-实践操作及原理 #### 一、SVN简介 SVN(Subversion)是一种分布式版本控制系统,它在CVS的基础上进行了大量的改进和完善,提供了更为强大的版本控制功能。与传统的集中式版本控制系统不同,SVN...

    SVN版本控制系统

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

    SVN安装配置及使用说明

    8. **分支与合并**: 创建分支`svn copy -r REV url/to/trunk url/to/branch`,合并`svn merge url/to/branch`。 **四、高级使用** 1. **钩子脚本**: SVN支持预定义的服务器端钩子脚本,如pre-commit和post-commit...

    SVN配置管理 subversion服务器端和客户端操作

    1. **创建分支**:在Repository Browser中,右击`trunk`,选择“Branch/tag”,创建名为`branch1.0`的分支。 2. **添加文件**: - 在本地的`branch1.0`代码文件夹,创建并编辑`a.txt`、`b.txt`和`c.txt`。 - 选中...

    eclipse_svn_plug

    8. **标记(Tag)**:在开发周期的重要节点,如发布版本时,可以通过Team > Branch/Tag创建标记,以保存特定版本的快照。 9. **合并(Merge)**:如果在一个分支上进行了修改,可以使用Team > Merge将这些更改合并...

    SVN常用功能详细说明

    - **操作步骤**:在需要创建分支或标签的文件夹上右键选择“Create Branch/Tag...”,然后指定新分支或标签的名称和位置。 #### 五、常见问题及解决方案 ##### 5.1 You must input the log message. - **产生原因...

    Svn相关学习资料以及视频

    - **Branch/Tag**:分支用于并行开发,标签用于标记特定版本,这两个概念是版本控制中的重要组成部分。 3. **SVN 版本管理**: - SVN 支持版本历史查看,你可以随时查看文件或目录的历史版本,回退到任何历史状态...

    SVN服务端配置手册

    - SVN Branch & Tag:创建和管理代码库的不同版本或分支 通过以上步骤,您已具备基本的SVN服务端配置和客户端使用的知识。在实际项目中,权限管理和版本控制是团队协作的重要环节,确保每个成员都能访问他们所需的...

    svn菜单项说明

    12. **Branch/Tag**:Branch用于创建项目分支,Tag用于创建项目里程碑或快照。用户可以输入分支或标签名称,提交后,可以在不同分支间进行开发。 13. **Switch**:Switch允许用户在不同的分支或标签之间切换,以...

    svn.zip安装包

    - **创建分支/标签**:在版本库中右键选择"SVN Create Branch/Tag",按照提示操作。 以上就是关于SVN的基本知识,包括其核心概念、功能、安装和使用。通过SVN,开发者可以更有效地进行团队协作,管理和维护项目...

    MyEcilpse中配置svn

    你可以通过右键点击项目,选择“Branch/Tag”创建分支,然后在分支上进行独立开发。当需要将分支的代码合并回主分支时,使用“Merge”功能。 通过以上步骤,你已经成功地在MyEclipse中配置了SVN插件,并学会了如何...

    TortoiseSVN-1.8.4 64位及LanguagePack_1.8.4.中文语言包64位

    - 你可以通过右键菜单中的“SVN Branch/Tag”创建分支或标签,便于不同开发阶段的代码管理。 - “SVN Merge”用于合并不同分支的更改到主分支,确保所有改动都能正确整合。 总之,TortoiseSVN是Windows用户非常...

    Myeclipse的svn插件,及添加步骤

    - 创建分支/标签:对于大型项目,经常需要创建分支进行特性开发,通过“Team” -> “Branch/Tag”可创建。 - 合并分支:开发完成后,使用“Merge”功能将分支的改动合并回主分支。 以上就是MyEclipse8.6中添加和...

Global site tag (gtag.js) - Google Analytics