svn 分支与合并的使用

在使用svn的时候我们往往有这样的需求。我们修改某些代码,因为对某项技术不是非常的熟悉,担心自己当前的修改(或者叫测试)会影响到服务器中版本库代码的崩溃等。传统做法我们会手动复制一份代码,然后修改如果修改成功则提交到服务器版本库,否则直接删除。 
     这样做一定程度上满足了要求,但一个问题是在你进行测试修改的时候版本库可能已经更新了n个版本了。那当你的实验完成后再提交到版本库区的时候就可能会有非常多的冲突。而且在你实验的过程中可能也会有很多的中间结果需要保存,如果无法提交,那一旦自己机器出现任何问题都可能会造成之前的努力前功尽废。 
     于是svn里面就有了分支这样的一个概念,不单是解决这个问题。还有满足了代码访问权限的控制,以及开发小组的再划分。在svn中,我们要做一些测试性的开发。只需要主干文件夹上右键: 
  
就能在svn服务器上建立一个分支了,然后我们需要将该分支的代码checkout出来,checkout的url只到https://127.0.0.1/svn/OnlyForTest/branches/xm_20110119 
     相当于在本地复制了一份代码到branches文件夹的xm_20110119文件夹,然后开发的时候我们是针对xm_20110119下的代码做的测试开发。其中的commit和update和没有建立分支的情况一样。不同的是你commit和upadate针对的都是https://127.0.0.1/svn/OnlyForTest/branches/xm_20110119 这一分支所做的任何修改都不会影响到其他分支。 
          当你修改完之后,想要将修改的效果体现到主干分支的时候我们要执行的操作是,在主干文件夹上右键,TortoiseSVN---Merge… 
  
此时你本地的主干文件夹中的代码就得到了你分支中进行修改后的效果,但只是你本地的进行了变化,要想真正的体现到所有的用户,我们需要在主干文件夹上再进行commit操作。

另一个需求是,我们在分支上所做的修改需要比较长的一段时间才能完成,在这过程中主干中的代码可能更新了无数个版本了,当我们代码修改完成时候与主干上的代码差别可能就会非常大,就可能会造成冲突的情况。这种情况怎么处理呢? 
    svn还提供了一个将主干文件夹(本地)代码合并到分支上来的功能,注意合并过来的只是本地的主干文件夹的代码,因此要确保主干文件夹上的代码就最新,即我们需要经常的进行upadate操作。操作是在分支根目录上右键: 

另:对于分支如果是个人开发的测试,基本上不用commit的,除非需要备份或者保存一些中间结果。否则,只需要在修改完成的时候合并到主干代码文件夹,然后由主干进行统一commit就可以了.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

liunx 下SVN合并

假设分支名称为:projectA/20110826,现在要合并到trunk上,步骤如下:
1)查询该分支创建时revision(在输出的最后一行,比如:1447);
svn log –verbose –stop-on-copy http://192.168.x.x/svnrepos/project/branches/projectA/20110826
2)可以先演练一遍,看看有哪些冲突(HEAD表示trunk中的最新的revision);
svn merge –dry-run -r1447:HEAD http://192.168.x.x/svnrepos/project/branches/projectA/20110826
3)觉得没什么大问题,可以开始正式合并了;
svn merge -r1447:HEAD http://192.168.x.x/svnrepos/project/branches/projectA/20110826

4)解决冲突,然后提交,合并完成。
svn commit -m “merge the branch projectA/20110826 to the trunk” .

时间: 2024-08-10 19:10:25

svn 分支与合并的使用的相关文章

SVN 分支及合并的介绍和实践---命令行

写在前面 一些相关的概念和原理 进行分支开发的最佳实践 合并的分类 在 Eclipse 中进行合并操作 相关资源 写在前面 本文是由演讲整理而来的,介绍了 SVN 分支与合并的概念.流程和一些实际操作方法,适合对版本控制有基本认识然后想了解 SVN 分支与合并的使用方法的读者. 对应 SVN 版本最低为 1.5,因为分支.合并的很多功能都是 1.5(release notes ) 才加进来的. 一些相关的概念和原理 分支(branch)和标记(tag)对于 SVN 来说就只是副本(copy),没

详细说明svn分支与合并---命令行

一,svn分支与合并有什么用? 作程序的,对svn在熟悉不过了,但对svn分支熟悉的,我想并不多.因为一般情况下,是用不着svn分支的,其实也没有那个必要.下面我例举几个需要用到svn分支的情况: 1,比较大的项目.比较大的项目,一般情况下会分成几个阶段来完.好比什么五年计划.到了某个阶段时,我建立一个分支,当个备份.万一将来开发下个阶段东西的时候,出现致命错误的时候,我还能把这个分支拿出来接着用. 2,项目要开发新的东西,但是又不想和主干冲突,建立一个分支,单独做为一个开发分支.这样做也是为了

详细说明svn分支与合并,以及实例

详细说明svn分支与合并,以及实例 一,svn分支与合并有什么用? 作程序的,对svn在熟悉不过了,但对svn分支熟悉的,我想并不多.因为一般情况下,是用不着svn分支的,其实也没有那个必要.下面我例举几个需要用到svn分支的情况: 1,比较大的项目.比较大的项目,一般情况下会分成几个阶段来完.好比什么五年计划.到了某个阶段时,我建立一个分支,当个备份.万一将来开发下个阶段东西的时候,出现致命错误的时候,我还能把这个分支拿出来接着用. 2,项目要开发新的东西,但是又不想和主干冲突,建立一个分支,

实例讲解SVN分支和合并问题(转)

本节向大家简单描述一下SVN分支和合并方面的知识,在学习SVN的过程中SVN分支和合并时经常遇到的问题,在这里和大家分享一下,希望本文对大家有用. 关于主线同SVN分支合并的概念及如何使用的误区此问题是在netbuddy的问题上研究而成,走出误区的过程中得到了pcplayer指点迷津.   一.我的合并需求 在主线的第54个版本上作了分支,在接下来的日子里,主线和分支同时都有修改,此时需要将分支上的改动合并到主线上,合并前主线和分支都已经提交,截至到合并前,主线的修改达到了版本号66,而分支的修

SVN分支的合并和同步

使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影响,最主要的原因是,自己对分支的目的和合并的方法不甚了解,这才是硬伤. 最近由于适配机型的需要(本人从事手机客户端的开发),需要经常接触分支和合并两项工作,突然发现这玩意整不明白很难开展工作,遂这两天着重研究了一下,有点收获,怕以后忘了,故趁着余温尚在赶紧写下来,好记性不如烂笔头嘛.下文的实践主要是参考了TortoiseSVN的帮助文档和S

SVN分支与合并

最近由于工作原因接触了SVN的分支,现在做一下笔记,以便查阅. 关于SVN分支的重要性我就不多说了,网上有很多答案,可以自行查找. 我用的svn版本是TortoiseSVN 1.8.8 1.建立分支鼠标右键你的本地项目文件夹,依次选择 TortoiseSVN --> Branch/tag 出现以下弹框,在 To path 里面填写分支的地址,只需把主干的文件名替换成分支的文件名就好,在本地和svn不需要新建文件夹,否则点击ok时会提示目录已存在:然后添加log:选择HEAD revision i

eclipse svn分支与合并操作

以前做项目的时候没有用过svn的分支合并操作,今天用到了,刚开始还真不会啊.最后查了下就是这么的方便.专门记录下来. 原文来自:http://blog.csdn.net/lisq037/article/details/17501327 还可以参考如下几篇文章 http://toptree.iteye.com/blog/1143328 http://www.cnblogs.com/wenlong/archive/2012/05/07/2586853.html 要在svn主干上创建分支,用分支来进行

SVN教程——分支与合并

作者:zhanhailiang 日期:2014-10-17 分支的应用场景 总结一句就是方便并行开发. Subversion has commands to help you maintain parallel branches of your files and directories. It allows you to create branches by copying your data, and remembers that the copies are related to one

svn branch and merge(svn切换分支和合并)详解

下文的实践主要是参考了TortoiseSVN的帮助文档和Subversion的在线文档,Subversion的在线文档:http://svnbook.red-bean.com/en/1.5/svn-book.html 先说说什么是branch.按照Subversion的说法,一个branch是某个development line(通常是主线也即trunk)的一个拷贝,见下图: branch存在的意义在于,在不干扰trunk的情况下,和trunk并行开发,待开发结束后合并回trunk中,在bran