You are here

Drupal专业开发指南 第21章 创建一个兼容Drupal5的分支

让我们继续前进,来创建分支:

 
cvs tag -b DRUPAL-5
 
    不要被这里的单词tag搞晕了。由于我们加了-b选项,所以这里创建的是一个分支,而不是一个标签(更准确的说,一个分支就是一个标签,一个特殊的标签,不过我们这里将其简单化一点)。执行了上面的命令以后,模块的开发历史就带有了新的DRUPAL-5分支了,如图21-7所示。
 
 
21-7.带有Drupal5分支的模块开发历史
 
    注意,由于我们还没有做任何修改,所以此时代码在两个分支中还是完全相同的。
    现在让我们看一个现实的问题。我们的模块依赖于badger(徽章)模块!而我们尚未在.info文件中对此做出声明。此外,Drupal5描述依赖关系的语法与Drupal6及以后版本的语法不一样。所以,让我们为DRUPAL-5分支添加Drupal5版本。但是如何判定本地工作空间包含了什么呢?本地空间中的那些文件是来自于DRUPAL-5分支,还是来自于HEAD?让我们声明我们需要DRUPAL-5分支的文件:
 
cvs update -dP -r DRUPAL-5
 
    这个命令的意思是说,“获取DRUPAL-5分支的文件,创建任何需要的新目录,删除任何不再需要的空目录”。现在让我们修改.info文件:
 
// $Id: foo.info,v 1.2 2008/05/22 14:28:25 jvandyk Exp $
name = Foo
description = Sends badgers to those who use it.
dependencies = badger
 
    让我们查看这些变更:
 
cvs diff -up foo.info
 
===================================================================
RCS file: / cvs/drupal-contrib/contributions/modules/foo/foo.info,v
retrieving revision 1.2
diff -u -u -p -r1.2 foo.info
--- foo.info 22 May 2008 14:28:25 -0000 1.2
+++ foo.info 22 May 2008 16:40:53 -0000
@@ -1,4 +1,4 @@
// $Id: foo.info,v 1.2 2008/05/22 14:28:25 jvandyk Exp $
name = Foo
description = Sends badgers to those who use it.
-core = 6.x
+dependencies = badger
 
    注意我们删除了“core = 6.x”(因为这是个Drupal6特性,而现在是在DRUPAL-5分支上),让我们查看一下状态:
 
cvs status foo.info
 
===================================================================
File: foo.info Status: Locally Modified
Working revision: 1.2 2008-05-22 09:28:25 -0500
Repository revision: 1.2 / cvs/drupal-contrib/
contributions/modules/foo/foo.info,v
Commit Identifier: LYpsSr1ZkEut7Y3t
Sticky Tag:    DRUPAL-5 (branch: 1.2.2)
Sticky Date:    (none)
Sticky Options: (none)
 
    注意,状态现在为Locally Modified本地已修改),而Sticky Tag字段指示我们使用的是DRUPAL-5分支。
    最后,让我们提交变更:
 
cvs commit -m "Drupal-5-compatible dependency on badger module."
 
    图21-8给出了现在的模块开发历史。
 
21-8.DRUPAL-5分支提交代码后,模块的开发历史
 

Drupal版本: