全程剖析:Subversion合并之简单介绍一

开发 项目管理
本文介绍了Subversion合并问题,和大家分享一下,看完本文你肯定有不少收获,希望本文能教会你更多东西。

Subversion合并问题你是否了解,这里就向大家简单介绍一下,欢迎大家能和我一起学习Subversion合并。

Subversion1.5支持合并跟踪,本文将对什么是合并跟踪,及其对你们组织具备的意义提供了高级的总体看法,我将会从许多基本的解释开始,如果你熟悉分支与合并,请掠过第1段。

1.什么是分支与合并?
开发团队经常会在多个并行线上开发,叫做”分支”,一个分支从拷贝开发项目(或一个目录)所有的文件开始,然后开始单独的维护这个拷贝,文件开始都是相同的,但经过一段时间,它们将会不同,因为不同的开发者在不同分支做出了修改。

为什么分支?你或许在Subversion创建一个分支用来维护产品发布,同时为下一个版本工作。为什么?下一个版本会有新的特性,但是在维护分支你只接受bug修改。另一个用例是开发复杂的新特性,而它会将使得开发构建不稳定,通过在不同分支开发,你将其他开发者从可能的构建失败中分离出去。Subversion自己的合并跟踪特性在一个分支上开发了差不多一年。

Graph1.两个分支的主线开发(trunk)
Subversion一直支持分支,但与其他系统不同,它不会真正的拷贝文件,那样会快速加大版本库的体积。相反,Subversion会创建一个到原来已有目录的快速引用,只是记录分支和trunk的文件修改,这样的结果是创建分支非常迅速,版本库几乎不会增加大小。有些时候,代码需要合并。例如,一个开发者在维护分支上修订了一个bug,你会希望将修改合并到主开发线上,否则,你的下个发布还会有这个bug。另一个例子是在分支上开发一个新特性。就像我们说的,Subversion自己的合并跟踪特性就是在分支上开发的,在2007年2月,这个特性足够稳定,然后合并到了trunk。

Graph2.Subversion合并代码
让我们看一个简单的合并实例,这是我们的代码:

  1. trunk的代码(主码基)  
  2. main()  
  3. {  
  4. printf(”hello,wordn”);  
  5. }  
  6.  
  7. 现在我们做一个分支,从用户的角度会有两份代码:trunk的代码(主码基)分支代码  
  8. main()  
  9. {  
  10. printf(”hello,wordn”);  
  11. }  
  12. main()  
  13. {  
  14. printf(”hello,wordn”);  
  15. }  
  16. “Word”实际上应该为”World”,我们有一个bug,开发者在分支上修改了它,文件现在已经不同了。  
  17. main()  
  18. {  
  19. printf(”hello,wordn”);  
  20. }  
  21. main()  
  22. {  
  23. printf(”hello,worldn”);  
  24. }  
  25. 在某一时刻,bug修正合并到了trunk  
  26. >>svnmerge:Subversion将修改从分支合并到trunk。  
  27. main()  
  28. {  
  29. printf(”hello,worldn”);  
  30. }  
  31. main()  
  32. {  
  33. printf(”hello,worldn”);  

2.Subversion与合并
就像分支,Subversion一直支持合并,如果你要求它可以自动完成许多工作。但是Subversion不会”记住”什么代码从什么分支在什么时候合并,尽管分支与合并在Subversion中工作很好,但是合并跟踪特性的添加解决了许多限制:重复合并,假设你有一个特性分支与主干同步,没有合并跟踪时,你必须小心的(且手工的)记录哪些修订版本已经合并,这会非常乏味,而且如果你忘了合并特定修改或是创建叫做”伪造的冲突”的东西,这意味着文件没有正确的合并,结果修订版本有错误。
审计。当你合并一个特性分支回trunk,trunk的历史只记录了合并的发生,但是不知道合并了什么,这样就很难准确找出合并了什么到trunk。

3.这对你意味着什么?
开发团队多年里成功使用Subversion合并和分支,但是合并跟踪提供了许多好处:合并跟踪添加了审计/跟踪能力(那些代码合并了,何时,何地?)。许多组织因为管理目的需要这个特性。合并跟踪减少了错误和管理费用。团队会因为Subversion的合并跟踪功能提高生产力。经常合并很重要。两个开始相同的文件会随着时间变得很不一样,不同的越多,越难以合并。如果经常合并,增量的区别会比较小,会易于合并。合并跟踪可以使得易于经常合并。许多选择Subversion的公司采用限制分支的策略,他们不能从好的分支策略和并行开发中得到好处,例如:他们选择在主开发线开发一个风险很大的新特性,结果就是项目成员要处理经常的构建错误。最终的好处:一些公司还没有使用Subversion,而使用传统的昂贵的工具,他们在等待合并跟踪。本文对Subversion合并问题的介绍还没有结束,请大家继续关注。
 

【编辑推荐】

  1. 三大主流Subversion客户端初探
  2. 术语汇编:简单剖析Subversion Eclipse
  3. 在Linux下subversion和apache安装配置
  4. 浅谈Subversion密码的远程修改工具
  5. Subversion教程:新手快速入门
责任编辑:佚名
相关推荐

2010-05-14 14:20:16

2010-05-13 15:38:19

Subversion

2010-05-13 09:01:05

Subversion下

2010-05-19 12:41:32

Subversion

2010-05-25 12:59:00

Subversion

2010-05-14 13:21:39

Subversion1

2010-05-19 14:05:59

Subversion+

2010-05-13 10:47:20

Collabnet S

2010-05-14 15:14:10

安装Subversio

2010-05-19 10:40:46

Subversion

2010-05-18 09:59:06

Subversion安

2010-05-18 09:43:58

Subversion安

2010-05-18 14:06:22

SubVersion和

2010-05-14 17:24:55

Subversion编

2010-05-19 13:12:42

Subversion服

2010-07-13 15:15:49

Perl二维数组

2010-05-18 13:02:30

2010-06-01 11:13:40

Svn分支合并

2010-06-01 18:03:05

Rsync 使用

2010-01-11 10:45:43

C++Builder
点赞
收藏

51CTO技术栈公众号