11.4 准备Subversion仓库

在正式创建Hudson持续集成任务之前,需要准备好版本控制系统。常见的版本控制工具有CVS、Subversion、Git、Mercurial等。由于Subversion可能是当前使用范围最广的版本控制工具,因此本书以它为例进行介绍。

首先需要安装Subversion服务器软件(本书仅讨论svnserve)。对于大多数Linux发行版和Mac OS X来说,该工具应该已经被预先安装了。可以运行如下的命令查看,见代码清单11-1。

代码清单11-1 在Linux/Mac OS X中检查svnserve安装


$svnserve—version

svnserve,version 1.5.5(r34862)

compiled Dec 23 2008,16:20:31

Copyright(C)2000-2008 CollabNet.

Subversion is open source software,see http://subversion.tigris.org/

This product includes software developed by CollabNet(http://www.Collab.Net/).

The following repository back-end(FS)modules are available:

*fs_base:Module for working with a Berkeley DB repository.

*fs_fs:Module for working with a plain file(FSFS)repository.

Cyrus SASL authentication is available.


对于Windows用户来说,可以安装Slik Subversion(http://www.sliksvn.com/en/download)。需要注意的是,在选择安装类型的时候,需要选择complete安装,否则默认的安装方式将不会安装svnserve,如图11-5所示。

11.4 准备Subversion仓库 - 图1

图 11-5 完整安装Slik Subversion

安装完成之后,可以运行如下命令进行验证,见代码清单11-2。

代码清单11-2 在Windows中检查svnserve安装


D:\>svnserve—version

svnserve,版本1.6.2(SlikSvn:tag/1.6.2@37679)WIN32

编译于May 11 2009,14:06:15

版权所有(C)2000-2009 CollabNet.

Subversion是开放源代码软件,请参阅http://subversion.tigris.org/站点.

此产品包含由CollabNet(http://www.Collab.Net/)开发的软件.

下列版本库后端(FS)模块可用:

*fs_base:模块只能操作BDB版本库.

*fs_fs:模块与文本文件(FSFS)版本库一起工作.

Cyrus SASL认证可用.


接着需要创建一个Subversion仓库。运行命令如下:


D:\>mkdir svn-repos

D:\>svnadmin create svn-repos\account


svnadmin是用来创建、维护、监测Subversion仓库的工具,在主流Linux和Mac OS X上一般都是预装的。在Windows上,它也被包含在Slik Subversion中。这里首先创建一个名为svn-repos的目录,然后在这个目录中创建一个Subversion仓库。

下一步是将本书背景案例现有的代码导入到这个Subversion仓库中。由于笔者的代码和Subversion仓库在一台机器上,因此直接使用file协议导入(导入之前应先使用mvn clean命令清除项目输出文件,这些文件是可以自动生成的,不该放入源码库中),见代码清单11-3。

代码清单11-3 导入源码至Subversion仓库


$svn import-m"initial import".file:///D:/svn-repos/account/trunk

增加 account-email

增加 account-email\src

增加 account-email\src\test

增加 account-email\src\test\java

增加 account-email\src\test\java\com

增加 account-email\src\test\java\com\juvenxu

增加 account-email\src\test\java\com\juvenxu\mvnbook

增加 account-email\src\test\java\com\juvenxu\mvnbook\account

增加 account-email\src\test\java\com\juvenxu\mvnbook\account\email

……

……

增加 account-captcha\pom.xml

提交后的版本为1.


上述命令将当前目录的全部内容提交到Subversion仓库的/account/trunk路径下,-m选项表示提交的注释。

仓库建立并初始化完毕,就可以启动svnserve服务了:


$svnserve-d-r svn-repos—listen-host 0.0.0.0


选项-d表示将svnserve服务作为守护进程运行,-r表示Subversion仓库的位置,而参数——listen-host是为了强制将svnserve绑定到IP v4地址(在有些系统上,svnserve会默认绑定IP v6地址,当Hudson使用IP v4地址访问Subversion仓库的时候就会失败)。

最后,可以用简单的svn命令检查插件svnserve服务是否可用,见代码清单11-4。

代码清单11-4 检查Subversion仓库内容


$svn list svn://192.168.1.101/account/trunk

.classpath

.project

.settings/

account-captcha/

account-email/

account-parent/

account-persist/

pom.xml


至此,Subversion仓库就建立完成了,之后Hudson就可以基于这个仓库运行集成任务。