Subversion 分支操作

来源:[url]http://www.blogjava.net/superliuwr/archive/2009/05/06/269214.html[/url]

[b]创建分支[/b]

创建分支最快捷简便的方法就是直接对url操作,然后从新的url co出工作拷贝。在Subversion server上,用硬链接的方式处理不同version之间相同的文件。

svn copy http://svn.example.com/svnroot/comet/trunk http://svn.example.com/svnroot/comet/branches/2.8 –m “creating a private branch of comet”



[b]合并一个分支上的修改到主干[/b]

Subversion的分支合并不是一个高风险的事情。其实Subversion并没有真正意义的分支概念,只有copy,但每个copy都会保留其所有的历史信息。像Clearcase那样的单独一个维度的version tag是不存在的,Subversion中的tag只是用来做快照而已,而且本质上也是copy,如果你提交新东西,那它就和branch是一样的。

简单地说,它一共只做了两件事。第一,比较两个版本的不同,这和你用svn diff得到的结果是一样的,只是svn diff会把changes打印出来。第二,把changes应用到你指定的工作拷贝上去,这表现为你的工作拷贝的本地修改,你可以在这个基础上再做修改,或是检查有没有问题,然后再提交。Subversion server并不关心你的提交是来自svn merge的修改,还是你自己改的代码。如果对结果不满意或者后悔了,一样可以用svn revert取消本地修改。

一个好的习惯是,提交的时候在注释中写清楚是从那个版本merge过来的。

Best practice 关于从某分支上merge changes到主干:

[b]step1[/b]:找到前一次合并到主干时的version(341)

svn log –v –-stop-on-copy http://svn.example.com/svnroot/comet/branches/2.8

[b]step2[/b]:切换到trunk的本地工作目录

[b]step3[/b]:update到最新,获得当前HEAD的version(405)

svn update

我们只用比较分支的初始状态和最终状态,然后把这些changes merge到主干上去,而不是分支的初始状态和主干的最终状态。

[b]step4[/b]:merge

svn merge –r 341:405 http://svn.example.com/svnroot/comet/branches/2.8

此处省略了目标工作拷贝,默认是当前目录的工作拷贝,也可以指定

svn merge –r 341:405 http://svn.example.com/svnroot/comet/branches/2.8 my_trunk_copy

[b]step5[/b]:查看merge后的状态

svn status

[b]step6[/b]:编译测试看有无问题

[b]step7[/b]:提交

svn commit –m “Merged 2.8 changes r341:405 into the trunk.”
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值