技术分享 源码版本管理 查看内容

TortoiseSVN中Branching(分支)和Merging(合并)实践

老高 | 发布于 2015-02-26 14:37| 浏览()| 评论() | 收藏() | 点赞() | 打印

摘要: 使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影响,最主要的原因是,自己对分支的目的和合并的方法不甚了解,这才是硬伤。

10、提交合并后的branch

至此,branch已经完全和trunk同步,branch和trunk的代码相处很融洽,没有任何冲突,如果branch已经开发结束,那是时候将branch合并回trunk了,当然,如果branch还要继续开发,那你将不断地重复6-10这几个步骤。

11、将branch合并回trunk

在/trunk/MyProject上右键(注意是在主线的目录上右键),依次选择"TortoiseSVN" -> "Merge...",在弹出的窗口中,Merge type选择第二项"Reintegrate a branch",这种类型的合并适合在分支开发结束后将所有的改动合并回主线。


点击next后出现如下窗口:

在这里,"From URL"选择/branches/MyProject,无需选择revision号,Reintegrate会将branch上所有修改合并到trunk。后面的步骤和上文第9步中的一样,不再啰嗦了。如无意外,branch将成功合并到trunk,你需要做的只是将合并后的trunk赶紧commit!

12、提交合并后的trunk

so easy...

13、删除branch

如果你认为你新加的功能已经开发完成了,你可以删除你的分支


到这里,我已经给你演示完了整个过程,我一身的汗也下来了,我想罢工了,不过最后我们还是看看所有的log信息吧,通过log能发现我们干的所有事情:

r1-r7正是我上文在干的事情,从Message中你能发现我对trunk和branch都干了什么,另外,在Log Messages窗口的左下角勾选了"Include merged revisions"你还能看到额外的Merge information:

图中灰色的是和merge相关的log,共发生了两次merge,第一次是在r6,在r6中,branch合并了trunk在r4时提交的变化;第二次是在r7,在r7中,trunk合并了branch从r2到r6的所有变化。


终于可以写写总结了:

1、branch主要用于新功能的开发

2、合并发生在本地working copy,只要你不提交就不会影响到repository

3、合并前一定要先update、commit,保证不会out of day,并将本地的修改保存到repository

4、branch和trunk并行开发的过程中,要经常同步,将trunk的修改合并到branch,合并时选择"Merge a range of revision"

5、branch最后合并回trunk时,merge type选择"Reintegrate a branch"

原文链接:http://blog.csdn.net/eggcalm/article/details/6606520

发表评论(对文章涉及的知识点还有疑问,可以在这里留言,老高看到后会及时回复的。)

表情