通常,一个文件的修订版本历史是一个增长线[修订号 在 第 4 章]:
+-----+ +-----+ +-----+ +-----+ +-----+
! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 !
+-----+ +-----+ +-----+ +-----+ +-----+ |
然而,CVS并不局限于线性的开发。版本树(revision tree)可以分为不同的分支(branches),每一个分支可以是一个独立的自我维护的开发线。而在一个分支中的变更可以很容易的转移到主干中。
每一个分支均有一个分支号(branch number),由奇数个“.”分开的十进制数组成,分支号的编排依赖于它分离出的版本。使用分支号允许从一个特定版本分离出多个分支。
所有的分支版本都依赖于它的原始分离版本号。下面的例子将展示这一点。
+-------------+
Branch 1.2.2.3.2 -> ! 1.2.2.3.2.1 !
/ +-------------+
/
/
+---------+ +---------+ +---------+
Branch 1.2.2 -> _! 1.2.2.1 !----! 1.2.2.2 !----! 1.2.2.3 !
/ +---------+ +---------+ +---------+
/
/
+-----+ +-----+ +-----+ +-----+ +-----+
! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 ! <- 主干
+-----+ +-----+ +-----+ +-----+ +-----+
!
!
! +---------+ +---------+ +---------+
Branch 1.2.4 -> +---! 1.2.4.1 !----! 1.2.4.2 !----! 1.2.4.3 !
+---------+ +---------+ +---------+
|
虽然如何创建具体分支号的细节通常不是你需要考虑的,但这里谈谈它如何工作。当CVS建立一个分支号时,它先得到第一个未用的偶数,开始的数字是2,例如你从6.4的主干版本创建分支时,分支号为6.4.2。所有分支号码末位为0(例如6.4.0)的号码用于CVS内部[内部分支号码]。分支1.1.1有特别的含义,[第 13 章]。