linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > unix > unix入门 >
栏目导栏
资料搜索
热门文章
·SCO OpenServer系统手册
·solaris迅速查找手册
·UNIX常用命令-目录及文件操作命
·常见的“压缩与解压缩”方法
·SUN的入门培训资料
·Solaris FAQ 1.2
·UNIX系统操作入门篇
·unix大全下载基地
·教你如何配置安全的SOLARIS系统
·吐血奉献.samba安装设置!
·solaris常用命令及简单解释
·UNIX 常识总集~!
·Windows XP 与 Solaris 10 双操
·隆重推荐:Solaris硬盘分区简介
·UNIX基础知识
最新文章
·Solaris SSH的配置和管理介绍
·在Unix环境下mount ISO文件
·Solaris 管理员常用的168条命令
·solaris raid 制作大集合
·在Solaris下使用USB存储设备
·SecureCRT访问HPUX没办法用vi问
·scounix网络设置心得
·solaris网络配置
·solaris上直接运行linux二进制
·HP Unix的补丁安装
·系统备份与恢复命令:fbackup+
·Oracle 10g基于Solaris 9 x86平
·完全硬盘安装solaris10
·solaris点滴9.29-10.07
·solaris volume manager do RA
Google
 
CVS, Automake与Autoconf简介
[ 作者:Linux联盟收集  加入时间:2006-06-25 15:25:06  来自:Linux联盟收集 ]
第一部分 CVS简介  r7uLinux联盟
cvs 
 Concurrent Version System )是一个版本控制系统,什么是版本控制系统呢?简单的说,它可以记录程序代码修改的过程,r7uLinux联盟
有一个完整的历史记录(
 history )。辟如说,当你在修改程序代码的时候, 不小心写出了一个 bug,但是你可能很久以后才发现r7uLinux联盟
多出了这个
 bugr7uLinux联盟
 这个时候,cvs 就能很有效的帮助你找出到底是在哪一次的修改中,出现了这个 bug  r7uLinux联盟
也许你会说那我每次都把程序保存起来tar 做好备份不就行了,当然你可以这样做但是这太浪费空间了! cvs 在版本更改间,r7uLinux联盟
 
只储存不同的部分这样就可以省下很多空间。  r7uLinux联盟
在另一个场合里更能显示出 cvs 的好处 ,比如多人一起开发软件的时候。 cvs支持远程访问用户可以对他要修改的文件加r7uLinux联盟
上正在编辑的标志
让别人知道他要修改这个文件了。 当然一个较大的开发队伍,一般还会需要一个 mailing list 用来沟通。r7uLinux联盟
毕竟
cvs 只是一个管理程序代码的工具他并不扮演沟通的角色。 cvs的同类软件还有rcssccsRCS ( Revision Control System ) r7uLinux联盟
可以从FSF获得。SCCS ( Source Code Control System ) AT&TSystemV中引入,现在已经被加入X/Open标准( Unix 98? )。r7uLinux联盟
比起这些软件,
CVS的要优秀得多,特别是在支持多人远程开发方面。由于CVS出现较新,所以使用上反而没有它们普及。当然,r7uLinux联盟
如果您熟悉
rcs,您会发现学习cvs非常容易。  r7uLinux联盟
r7uLinux联盟
名词  r7uLinux联盟
repository
 意为仓库。在 cvs 它就是你真正存放各历史版本的地方。 pserver cvs 远程服务器,cvs 有两种工作模式,r7uLinux联盟
 
一种是 local, 一种是 remoter7uLinux联盟
 一般通过inetd启动pserver  r7uLinux联盟
CVSROOT
 当使用 cvs 的时候要设定 CVSROOT这个环境变量或是用 -d 选项来指定该参数,该参数指明你的仓库放在哪里。  r7uLinux联盟
r7uLinux联盟
本地( local cvs  r7uLinux联盟
首先确定一个 cvsroot,比如:  r7uLinux联盟
export CVSROOT="/home/joe/cvsroot/" 
建立该目录:  r7uLinux联盟
mkdir /home/joe/cvsroot  r7uLinux联盟
接着,运行cvs init   r7uLinux联盟
cvs init  r7uLinux联盟
cvs init 
会帮你把 cvsroot 初始化。接着建立一个要放文件的目录 ( 相当于一个Project ) mkdir /home/joe/cvsroot/cvsdoc  r7uLinux联盟
cd /home/joe/work  r7uLinux联盟
cvs checkout cvsdoc
 或者简写为: cvs co cvsdoc  你会看到下面的信息: cvs checkout: Updating cvsdoc cvs checkoutr7uLinux联盟
 
会把当前最新的版本拷贝到你的当前目录下。  r7uLinux联盟
记住不要自己建立 /home/joe/work/cvsdoc, 该目录下还会有一些用于管理的 cvs 相关的信息。  r7uLinux联盟
接着进入 cvsdoc 目录编辑 cvs.doc 这个文件档案,输入一些信息。  r7uLinux联盟
然后,运行:  r7uLinux联盟
cvs add cvs.txt cvs commit -m "Initial revision." cvs add 
就会把 cvs.txt 加入 cvs 维护的文件列表中去。  r7uLinux联盟
cvs commit 
检查当前目录下所有的在文件列表中的文件,并把对他们的改动加入到仓库中。-m 表示这次 commit  message,一般说明此次修改的相关信息。  r7uLinux联盟
现在修改一下 cvs.txt,并且,在文件档案的最上面加上 $Id$ 的字样。  r7uLinux联盟
改完之后 commit 一次:  r7uLinux联盟
cvs commit -m "Adding new stuff."  r7uLinux联盟
现在看看我们所做的修改:  r7uLinux联盟
cvs log cvs.txt  r7uLinux联盟
可以看到:  r7uLinux联盟
RCS file: /home/joe/cvsroot/cvsdoc/cvs.txt,v  r7uLinux联盟
Working file: cvs.txt  r7uLinux联盟
head: 1.2  r7uLinux联盟
branch:  r7uLinux联盟
locks: strict  r7uLinux联盟
access list:  r7uLinux联盟
symbolic names:  r7uLinux联盟
keyword substitution: kv  r7uLinux联盟
total revisions: 2; selected revisions: 2  r7uLinux联盟
description:  r7uLinux联盟
----------------------------  r7uLinux联盟
revision 1.2  r7uLinux联盟
date: 2000/09/11 11:55:06; author: joe; state: Exp; lines: +2 -0  r7uLinux联盟
r7uLinux联盟
----------------------------  r7uLinux联盟
revision 1.1  r7uLinux联盟
date: 2000/09/11 11:52:32; author: joe; state: Exp;  r7uLinux联盟
initial version  r7uLinux联盟
==================================================================  r7uLinux联盟
你会看到每次修改加进去的 message。这对开发者,特别是一个大的项目的开发者,其帮助是不言而喻的。  r7uLinux联盟
cvs diff -r 1.1 -r 1.2 cvs.txt  r7uLinux联盟
可以看到:  r7uLinux联盟
Index: cvs.txt  r7uLinux联盟
================================================================== RCS file: /home/joe/cvsroot/cvsdoc/cvs.txt,v  r7uLinux联盟
retrieving revision 1.1  r7uLinux联盟
retrieving revision 1.2  r7uLinux联盟
diff -r1.1 -r1.2  r7uLinux联盟
0a1  r7uLinux联盟
>; $Id: cvs.txt,v 1.2 2000/09/11 11:55:06 joe Exp $  r7uLinux联盟
1a3  r7uLinux联盟
>; hehe,sencond time edit it!  r7uLinux联盟
这样会显示 1.1  1.2 版的 diff, 原本有 1.1 版的人只需要用这个 patch 就可以了升级到1.2了!  r7uLinux联盟
再编辑 cvs.txt, 可以发现最上面的 Id 变长了加了一代串文字:  r7uLinux联盟
$Id: cvs.txt,v 1.2 2000/09/11 11:55:06 joe Exp $ 
这显示这个版本的一些相关信息。  r7uLinux联盟
远程( remote cvs  r7uLinux联盟
如果我们要做一个比较大的项目,上面讲的本地cvs服务就太简单了,我们要让众多的人可以远程开发程序! 比如我们要用cvs组织起我们的minigui项目。r7uLinux联盟
 检查 /etc/services 有没有这两行,没有请加入:  r7uLinux联盟
cvspserver 2401/tcp #CVS network server cvspserver 2401/udp #CVS network server  r7uLinux联盟
 /etc/inetd.conf 加入:  r7uLinux联盟
cvspserver stream tcp nowait root /usr/local/bin/cvs cvs --allow-root=/home/minigui pserver  r7uLinux联盟
mkdir /home/minigui  r7uLinux联盟
要是该设置生效,请重启inetd  r7uLinux联盟
添加用户anoncvs, 这是要给匿名cvs 用户使用的帐号,其组为nogroup 新加一个名为 minigui group 添加参与 minigui开发的用户的帐号r7uLinux联盟
当然把他们的 group 设为 minigui  r7uLinux联盟
cvs -d /home/minigui init  r7uLinux联盟
cd /root/minigui, 
这是原来已经存在的版本现在我们要把它的东西放进 cvs 仓库里: 比如,我们把minigui的库minigui03放到仓库中:  r7uLinux联盟
r7uLinux联盟
cd minigui03;cvs import