You are here

Drupal专业开发指南 第21章 高级分支化

在前面的例子中,我们假定在一个Drupal主版本下只存在模块的一个主版本,但是这也有例外的情况。例如,假定我们发布了foo模块的6.x-1.3版本。接着,灵感爆发了。我们想到了另外的一种实现方式,只需要一半的代码量,就可以实现同样的功能,而且跑得更快。不过,这需要修改API,而与foo模块相关的一切将全被打乱。解决的方案是使用新API发布一个2.0版本。由于模块仍然兼容于Drupal 6,所以我们使用DRUPAL-6--2-0作为标签名,而对应的发布号就是6.x-2.0。

    我们可以把代码提交到DRUPAL-6—1分支中,然后告诉他人6.x-1.3版是我们模块的1.x系列的最终发布了。但是如果安全小组在我们的模块中找到了一个安全漏洞,我们不得不发布6.x-1.4版,那该怎么办呢?所以,对于我们重写的模块,不能为它使用DRUPAL-6—1分支。
    那么解决方案呢?创建一个新分支,在那里我们发布模块的2.0版。我们把新分支命名为DRUPAL-6--2,在已有的DRUPAL-6--1分支上做出DRUPAL-6--2分支。首先,确定我们得到了DRUPAL-6--1分支下文件的最近版本。接着创建新分支:
 
cvs update -dP -r DRUPAL-6--1
cvs tag -b DRUPAL-6--2
 
    我们的开发历史,现在变成了图21-18所示的样子。
 
21-18.在已有的稳定分支上创建一个新分支
 
    另一种可选的方式是,如果我们还没有为Drupal 7做任何开发,那么对于模块的2.0发布的开发,我们可以为其使用HEAD,最后,我们再从HEAD上为2.0系列的发布创建一个分支(这和DRUPAL-6—1分支的创建方式一样)。这种方式如图21-19所示。
 
21-19.HEAD上为模块的第2个稳定分支创建一个分叉,模块的这个主版本也支持Drupal的同一个主版本(Drupal 6)
 
    这两种方式的具体选择,取决于实际情况。一般来讲,尽可能的不去创建新分支,直到必须创建的时候再为其创建。在图21-19中,创建DRUPAL-6--2分支的决定因素是开始为Drupal 7开发了模块了。如果没有DRUPAL-6--2分支的话,那么模块的2.0系列的开发将还会占据着HEAD,这样在CVS树中,就没有地方进行Drupal 7下的开发了。
 

Drupal版本: