简言叙之Subversion 1.5 Merge-Tracking
Filed Under (General) by racoonwise on 10-07-2008
Subversion 1.5已经发布了,最令人激动的还是“merge tracking”。
Merge-tracking是版本控制系统保持跟踪开发分支(branches)并且再组合在一起。在开源的历史上,像CVS和Subversion从来没有实现过这个功能;他们依靠“高级”用户仔细的检查历史记录然后输入神秘带有正确参数的的命令来完成。分支和合并是有必要的,但是绝对不简单。当然,分布式版本控制系统已经开始去消除对分支和合并的恐惧–他们实际上把合并作为一个核心竞争力。然而Subversion 1.5没有把mergeing做成像Git或者Mercurial那样简单,当然,它解决了通病。俗话说“它使简单的更简单,使困难的变可能。”Subversion开始具备一些大型的商业软件具有的特性,如Clearcase和Perforce。
我的合作者和我准备推出Subversion免费在线文档的第二版(今年夏天你可以从O’Reilly购买印刷版)。如果想了解有关merging的更多细节,你可以查看第四章,但是现在我想做一个非常简单的例子来展示它的工作是多么的简单。
- 为你的实验建立一个分支
- 在分支上工作
- 同步你的分支
- 重复前两步的工作,直到你完成代码。
- 合并你的分支回主干
- 去喝杯啤酒吧,从此不再有分支的烦恼。
$ svn cp trunkURL branchURL
$ svn switch branchURL
# …edit files
$ svn commit
# …edit files
$ svn commit
$ svn merge trunkURL
— Merging r3452 through r3580 into ‘.’:
U button.c
U integer.c
…
$ svn commit
$ svn switch trunkURL
$ svn merge –reintegrate branchURL
— Merging differences between repository URLs into ‘.’:
U button.c
U integer.c
…
$ svn commit
注意我怎么没有输入版本号:Subversion 1.5知道分支是什么时候建立的,哪些修改需要从分支同步到主干,哪些修改需要合并回主干。哈哈,神奇吧。
About the Author
Collins Sussman is one of the original designers and developers of Subversion, a free version control system designed to replace CVS. I’ve co-authored a free, online book about Subversion, also available in hardcopy from O’Reilly & Associates. He currently works as a software engineer for Google.