分支与修订版本

通常,一个文件的修订版本历史是一个增长线[修订号 在 第 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 章]。