首页 » Maven实战 » Maven实战全文在线阅读

《Maven实战》13.3 主干、标签与分支

关灯直达底部

使用版本控制工具时我们都会遇到主干(trunk)、标签(tag)和branch(分支)的概念。13.1节已经涉及了主干与标签。这里再详细将这几个概念阐述一下,因为理解它们是理解Maven版本管理的基础。

·主干:项目开发代码的主体,是从项目开始直到当前都处于活动的状态。从这里可以获得项目最新的源代码以及几乎所有的变更历史。

·分支:从主干的某个点分离出来的代码拷贝,通常可以在不影响主干的前提下在这里进行重大Bug的修复,或者做一些实验性质的开发。如果分支达到了预期的目的,通常发生在这里的变更会被合并(merge)到主干中。

·标签:用来标识主干或者分支的某个点的状态,以代表项目的某个稳定状态,这通常就是版本发布时的状态。

本书采用Subversion作为版本控制系统,如果对上述概念不清晰,请参考开放的《Subversion与版本控制》(http://svnbook.red-bean.com/)一书。

使用Maven管理项目版本的时候,也涉及了很多的版本控制系统操作。下面就以一个实际的例子来介绍这些操作是如何执行的。

图13-2下方最长的箭头表示项目的主干,项目最初的版本是1.0.0-SNAPSHOT,经过一段时间的开发后,1.0.0版本发布,这个时候就需要打一个标签,图中用一个长条表示。然后项目进入1.1.0-SNAPSHOT状态,大量的开发工作都完成在主干中,添加了一些新特性并修复了很多Bug之后,项目1.1.0发布,同样,这时候需要打另一个标签。发布过后,项目进入1.2.0-SNAPSHOT阶段,可这个时候用户报告1.1.0版本有一个重大的Bug,需要尽快修复,我们不能在主干中修Bug,因为主干有太多的变化,无法在短时间内测试完毕并发布,我们也不能停止1.2.0-SNAPSHOT的开发,因此这时候可以基于1.1.0创建一个1.1.1-SNAPSHOT的分支,在这里进行Bug修复,然后为用户发布一个1.1.1增量版本,同时打上标签。当然,还不能忘了把Bug修复涉及的变更合并到1.2.0-SNAPSHOT的主干中。主干在开发一段时间之后,发布1.2.0版本,然后进入到新版本1.3.0-SNAPSHOT的开发过程中。

图13-2 主干、标签和分支与项目版本的关系

图13-2展示的是一个典型的项目版本变化过程,这里涉及了快照版与发布版之间的切换、Maven版本号约定的应用,以及版本控制系统主干、标签和分支的使用。这其实也是一个不成文的行业标准,理解这个过程之后,不仅能够更方便地学习开源项目,也能对项目的版本管理更加标准和清晰。