svn 分支与合并的使用

摘要:
我们在使用svn时经常有这样的要求。所以svn中有一个分支的概念,这不仅仅是为了解决这个问题。在svn中,我们需要进行一些测试开发。不同之处在于,提交和更新都针对https://127.0.0.1/svn/OnlyForTest/branches/xm_20110119对该分支所做的任何更改都不会影响其他分支。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… 
image
此时你本地的主干文件夹中的代码就得到了你分支中进行修改后的效果,但只是你本地的进行了变化,要想真正的体现到所有的用户,我们需要在主干文件夹上再进行commit操作。 
     另一个需求是,我们在分支上所做的修改需要比较长的一段时间才能完成,在这过程中主干中的代码可能更新了无数个版本了,当我们代码修改完成时候与主干上的代码差别可能就会非常大,就可能会造成冲突的情况。这种情况怎么处理呢? 
    svn还提供了一个将主干文件夹(本地)代码合并到分支上来的功能,注意合并过来的只是本地的主干文件夹的代码,因此要确保主干文件夹上的代码就最新,即我们需要经常的进行upadate操作。操作是在分支根目录上右键: 
image
另:对于分支如果是个人开发的测试,基本上不用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” .

免责声明:文章转载自《svn 分支与合并的使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇rsync 服务搭建10个精妙的Java编码最佳实践下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

svn Repositories 的导入导出操作

svn 服务端 VisualSVN Server 2.6.5svn 客户端 TortoiseSVN 1.8.4因为要更换svn服务器,需要将原有的代码库迁移到新的服务器上,还需要保留原有的代码库的所有信息,像日志、每次变更等。迁移方式有很多,因为代码库不多,就直接采用svn的dump和load进行迁移,通过这种方式,迁移后代码库将跟之前的代码库内容完全一致...

centos7 svn在repository在的情况下重装恢复

公司一台centos服务器一不小心被搞崩溃了,进不去系统,svn没有备份,泪牛满面~ 重装系统后,发现repository文件夹还在,幸亏代码没放根目录。 安装svn 开始恢复,先安装svn yum -y install subversion 迁移 大部分教程都是教从头创建repository,现在repository文件还在,该怎么操作? 网上搜了一通...

svn文件冲突,树冲突详解

解决冲突 偶尔,当你从版本库更新、合并文件时,或者切换工作副本至一个不同的 URL 时你会遇到冲突。有两种冲突: 文件冲突 当两名(或更多)开发人员修改了同一个文件中相邻或相同的行时就会发生文件冲突。 树冲突 当一名开发人员移动、重命名、删除一个文件或文件夹,而另一名开发人员也对它们进行了移动、重命名、删除或者仅仅是修改时就会发生树冲突。 文件冲...

SVN checkout 出的项目在PHPstorm中打开没有subversion(SVN)选项按钮怎么办?

 对于svn add 命令的批量操作,为了操作简便还是习惯在IDE中完成,有时候新checkout出的项目,在PHPstorm中右键菜单中没有 Subversion 按钮,操作如下: 点击VCS按钮,然后 选择 enable version control ,原来项目中有.svn文件的话就能直接用了 VCS - enable version control...

SVN 服务器端安装过程

1、安装软件版本: VisualSVN-Server-2.1.5.msi 右击安装软件,单机“安装”   2、单击【Next】 选择“I accept the terms in the License Agreement”,然后单击【Next】   3、这个界面是选择安装的组件,选择第一个“VisualSVN Server and Managem...

svn安装配置

1. 安装SVN服务器: 检查是否已安装 # rpm -qa subversion 安装SVN服务器 # yum install httpd httpd-devel subversion mod_dav_svn mod_auth_mysql 验证安装 # cd /etc/httpd/modules # ls | grep s...