为了做到持续集成,我们还需要有比较好的配置服务器的支持。项目组用的是Firefly,但是这个东西是不能得到CruiseControll的支持的。并且,我们使用Firefly去管理JAVA生成的Classes,这本身就是一个问题。
在目前的情况下,老大要保持稳定,不能去动这些东西。但是,作为良好的实践来讲,持续集成肯定是必要的。正如同Programtic 程序员修炼之道所讲的一样,单元测试、版本控制以及持续集成,完全是任何项目所必须具备的能力。
那么,什么样的源代码管理工具是可以得到CruiseControll的支持的呢,至少不是Firefly。我转身投入到CVS的怀抱中。主要原因有两个:
1. CVS历史悠久,有很多的使用用户。虽然已经升级了,但是,足以支持我们的应用。
2. CruiseControll支持它。
3. CVS的概念非常正宗。这里头的很多概念在Firefly中都体现出来了。除了日常的控制操作之外,还有很多关于版本控制的内容。
4. 更重要的是,我在学习版本控制之道,哈哈
CVS是C/S结构的应用,在服务器端,我采用的CVSNT2.5.03.2382,在客户端采用的是TortoiseCVS1.8.30。都是比较新的版本。
CVS的使用比较简单,安装完成之后,直接设置一下Repository的地址,注意name 和 path,不要搞错了,否则到后来用TortoiseCVS去new module的时候会有问题。
使用的协议是pserver,这个CVSNT自己就支持,不需要去下载专门的pserver管理软件。那,如果你需要使用ssh协议的话,那么还需要去专门去下载ssh的管理软件。这个在JAVAEYE上的其它文章中有写到,可以search一下。
我首先用的是混合协议,通过WINDOWS的用户来作为CVS的登陆用户。登陆到系统之后,
可以进行用户管理。在用户管理中以下是cvs的一些命令参数
Usage: cvs passwd [-a] [-x] [-X] [-r real_user] [-R] [-D domain] [username]
-a Add user
-x Disable user
-X Delete user
-r Alias username to real system user
-R Remove alias to real system user
-D Use domain password
cvs -d :pserver:
[email protected]:/repostory login 输入密码登陆即可。
cvs -d :pserver:
[email protected]:/repostory passwd -a user 然后输入密码
之后就可以利用user来登陆了
cvs -d :pserver:
[email protected]:/repostory login 输入密码即可
在网上还看到另外一种做法:就是编辑
# Set this to 'no' if pserver shouldn't check system users/passwords
#SystemAuth=yes 将这个设置为no就可以。
然后在修改passwd文件(这个文件安装是并没有建立,请自己建立一个passwd文件),添加
cvsroot:
user:
……:
之后也可以直接使用user来登陆就可以了。当然,CVS还是会提示你输入密码的:)