新闻中心

EEPW首页 > CVS完全手册(二)

CVS完全手册(二)

——
作者:时间:2007-04-05来源:收藏

分支管理
=============================
可以将历史划分成多个独立,并行和互不影响的分支,并去修改历史
1 标定里程碑
------------------------------------
cvs tag release_1_0 prj_dir_name

2 开始一个新的里程碑:
------------------------------------
cvs commit -r 2
标记所有文件开始进入2.x的开发
注意:里的revsion和软件包的发布版本可以没有直接的关系。但所有文件使用和发布版本一致的版本号比较有助于维护。

3 建立分支
------------------------------------
在开发项目的2.x版本的时候发现1.x有问题,但2.x又不敢用,则从先前标记的里程碑:release_1_0导出一个分支release_1_0_b2
cvs rtag -b -r release_1_0 release_1_0_bugfixes prj_dir_name
-r修饰的是release_1_0,-b 修饰的是release_1_0_bugfixes,cvs的版本号将变为4位,以后每分一次支,版本号增加2位

4 分支并行开发
------------------------------------
一些人先在另外一个目录下导出release_1_0_bugfixes这个分支:解决1.0中的紧急问题,
cvs checkout -r release_1_0_bugfixes
分支是可以修改的,并自动提交到分支上去
而其他人员仍旧在项目的主干分支2.x上开发

5 tag分支
------------------------------------
在release_1_0_bugfixes上修正错误后,标记一个1.0的错误修正版本号
cvs tag release_1_0_bugfixes_p1

6 合并分支
------------------------------------
如果2.0认为这些错误修改在2.0里也需要,也可以在2.0的开发目录下合并release_1_0_patch_1中的修改到当前代码中:
cvs update -j release_1_0_bugfixes

7 再次合并分支
------------------------------------
如果又发现1.x新的bug,我在分支已经修改了,并标定了release_1_0_patch_2,我们同样希望把它合并到主干上来
cvs update -j release_1_0_bugfixes_p1 -j release_1_0_bugfixes
它的意思是把release_1_0_bugfixes_p1(tag)到release_1_0_bugfixes(分支)变化了的部分合并到当前文件(主干)
否则用6步的方法,则以前合并的内容会重新合并
注意:此时我们使用第5步的结果
教训:尽早频繁的tag,但同时不能导致tag泛滥,tag在不同的分支里可以同名

8 锁定分支
------------------------------------
cvs admin -l r_0_2 锁定r_0_2分支
cvs admin -l    锁定主分支

9 设置缺省分支
------------------------------------
cvs admin -b r_0_2 设定r_0_2为缺省分支
cvs admin -b    设定主分支

10 删除历史记录
  如果历史文件过多,或确定有几个阶段的稳定版本,我们可以删除一些历史文件,以保证cvs的性能
cvs admin -o rev1:rev2 filename 删除rev1到rev2的版本,含这两个版本
cvs admin -o rev1::rev2 filename 删除rev1到rev2的版本,不含这两个版本
如果省略rev1,表示删除本分支rev2之前的所有版本
如果省略rev2,表示删除本分支rev1之后的所有版本
cvs admin -o rev filename 删除rev这个版本的文件
注意:有tag的版本不能被删除,所以tag很重要,而且只能删单个文件


CVS服务器的安装和配置
=============================
1 下载源码
------------------------------------
  可从很多地方下载cvs,也可从官方ftp://ftp.gnu.org/gnu/cvs/下载

2 安装,同很多源码安装一样
------------------------------------
  gunzip cvs-1.10.6.tar.gz
  tar xvf cvs-1.10.6.tar
  cd cvs-1.10.6
  ./configure
  make
  make install

3 包的安装,如果找到具体操作系统的安装包,则见此操作系统的使用说明,比如linux为
------------------------------------
  rpm -ivh cvs-1.10.8-3.i386.rpm即可

4 建立Repository
------------------------------------
  groupadd cvs(要访问cvs的用户加入此组)
  useradd cvsroot
  mkdir /home/cvsroot
  cvs -d /home/cvsroot init
  chown -R cvsroot.cvs /home/cvsroot
  chmod -R ug+rwx /homecvsroot

5 配置/etc/services文件
------------------------------------
 添加cvspserver,如果有就不要加了
cvspserver 2401/tcp # cvs client/server operations
cvspserver 2401/udp # cvs client/server operations

6 配置inetd
------------------------------------
  编辑/etc/inetd.conf,加入
cvspserver stream tcp nowait root /usr/bin/cvs cvs --allow-root=/home/cvsroot pserver
  如果使用tcpwrappers
cvspserver stream tcp nowait root /usr/sbin/tcpd /usr/bin/cvs --allow-root=/usr/local/newrepos pserver
  如果使用xinetd,编辑/etc/xinetd.d/cvspserver
  service cvspserver
 {
disable = no
socket_type = stream
wait = no
user = root
env = HOME=
server = /usr/bin/cvs
server_args = -f --allow-root=/home/cvsroot pserver
  }
pserver表示是口令认证,如果要用ssh方式则应该是server
--allow-root是Repository的目录,可以有多个此选项来建立多个Repository

7 验证配置成功
  cvs login看时候能成功登录,有几个可能失败的地方
  用户是否属于cvs组和目录权限
  inetd是否正常配置和启动,--allow-root是否写对
8 导入项目
  把你的所有项目文件放入prj_dir
  cd prj_dir
 cvs import -m "this is a cvstest project" prj_dir v_0_0_1 start
  v_0_0_1是这个分支的总标记.没啥用(或曰不常用)
 start 是每次 import 标识文件的输入层次的标记,没啥用。


Watchers
=============================
cvs提供了watch的功能,来帮助大家了解谁在干什么,谁在对文件做什么操作,它发email通知,以协调大家的工作。
1 开启watch功能
  在CVSROOT/notify文件中加入下面行
  ALL mail %s -s "CVS notification"
2 设定外部email地址
  缺省是把通知信息发给本机的email,要发给别的地址,在CVSROOT/users加入如下内容
  hwz:kerlion@netease.com
3 watch文件的修改
  cvs watch add filename
  cvs watch remove filename
4 watch文件的修改
  watch功能是个大家协调的功能,大家必须按一个统一的工作流程来做,如果不cvs edit,cvs没有办法通知修改情况
  cvs edit filename
  修改文件
  cvs unedit filename
5 提醒大家使用watch功能
  cvs没有强制使用watch的功能,只有这个功能在用户提交完后自动把文件变为只读的,再使用cvs edit filename就可以修改它了
  cvs watch on
6 查看那人人再watch
  cvs watchers


WinCVS的安装和配置
=============================
1、WinCVS简介:
WinCVS是CVS的一个客户端软件,它运行在Windows上,用来在Windows上登录CVS服务器,然后进行一些CVS相关的操作与管理。由于当前很多的企业内部都采用Linux/Unix做服务器,而用Windows做客户端,所以,WinCVS与CVS服务器配合使用将组成最强有力的版本控制与管理的系统之一。
2、WinCVS的下载与安装;
  最新的WinCVS可以从http://sourceforge.net/project/showfiles.php?group_id= 10072地址下载到,也可以在http://sourceforge.net/project 上下载到最新的或其它版本的WinCVS。
  下载到相应的版本后根据向导进行安装,已经要使用CVS的用户,安装这个WinCVS应该没什么问题吧!
3、配置WinCVS:
a、Admin->;Preferences…/general
   CVSROOT 按cvsroot格式填写
   Authentication:用来配置cvs服务器的认证方式一般只要选择默认的pserver方式就可以
       要注意的是必须与cvs服务器配置时所指定的认证方式一致
                   如果要用ssh server,确认在windows中安装了openssl,openssh
a、Admin->;Preferences…/Globals
  此项的配置主要是要注意这几选项:
  Checkout read-only:默认是选中的,建议不要修改,只是修改文件前需要先edit selection,提交后又自动变为只读
               这样有两个好处:
                一个是可以通过unedit selection来undo你做的修改
                二是可以符合watch功能的使用规范
  Prune empty directories: 不要选上,否则,会自动删除空目录;
4、登录服务器:
   选择Admin->;login,将出现如下对话框要求用户输入登录口令
   wincvs中命令的exit code 0表示正确执行,否则是失败,一般成功显示为
   *****CVS exited normally with code 0*****
5、winCVS的使用都有菜单,大家熟悉cvs的使用的话,用起来是很容易的,我就不多说了


CVSWEB的安装
=============================
CVSWEB就是CVS的WEB界面,可以大大提高程序员定位修改的效率:
使用的样例可以看:http://www.freebsd.org/cgi/cvsweb.cgi

CVSWEB的下载:CVSWEB从最初的版本已经演化出很多功能界面更丰富的版本,这个是个人感觉觉得安装设置比较方便的:
http://www.spaghetti-code.de/software/linux/cvsweb/

1 下载解包:
tar zxf cvsweb.tgz

2 把配置文件cvsweb.conf复制到apache的配置目录下
 cp cvsweb.conf /path/to/apache/conf
转到/path/to/apache/conf下并修改cvsweb.conf:
修改CVSROOT路径设置:
%CVSROOT = (
'Development' =>; '/path/to/cvsroot/dev', #<==修改指向本地的CVSROOT
'test' =>; '/path/to/cvsroot/test', #<==修改指向本地的CVSROOT
);
如果有多个cvsroot,这定缺省的cvsroot
$cvstreedefault = 'test';

3 其它个性化设置
 cvsweb.conf还有许多其它个性化设置,常见的有这些变量:
 $logo 图标设置
 $defaulttitle 标题设施
 $address 管理员email地址设置
 $long_intro 介绍文字
 $short_instruction  说明文字

4 把文件cvsweb.cgi复制到apache的cgi目录
 cp cvsweb.cgi /path/to/apache/cgi-bin
 转到/path/to/apache/cgi-bin修改cvsweb.cgi
修改cvsweb.cgi让CGI找到配置文件:
$config = $ENV{'CVSWEB_CONFIG'} || '/path/to/apache/conf/cvsweb.conf';

5 中文支持
 让cvsweb正确显示中文,找到sub html_header($)函数,
 然后在<html>;和<title>;之间插入一行,修改如下
 <html>;
 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">;
 <title>;$title</title>;
6 复制所有的gif,png文件到apache的icons目录
7 增加访问控制
CVSWEB可不能随便开放给所有用户,因此需要使用WEB用户认证:
先生成 passwd:
/path/to/apache/bin/htpasswd -c cvsweb.passwd user

修改httpd.conf: 增加
<Directory "/path/to/apache/cgi-bin/cvsweb/">;
AuthName "CVS Authorization"
AuthType Basic
AuthUserFile /path/to/cvsweb.passwd
require valid-user
</Directory>;

 

==========================================================================
参考文档:
CVS的常用命令速查手册,车东,chedong@bigfoot.com
CVS服务器与WinCVS的配置与使用,吴炎溪,Yanxi-Wu@21cn.com
CVS速成班,作者不祥
cvs book,Karl Fogel,kfogel@red-bean.com



关键词: CVS

评论


技术专区

关闭