CVS使用手册.docx
- 文档编号:9550721
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:26
- 大小:26.87KB
CVS使用手册.docx
《CVS使用手册.docx》由会员分享,可在线阅读,更多相关《CVS使用手册.docx(26页珍藏版)》请在冰豆网上搜索。
CVS使用手册
CVS使用手册
(UNIX)
目录
CVS安装和配置2
安装:
2
配置:
2
CVS常用命令4
常用命令举例:
5
命令列表8
CVS常见问题答疑:
14
CVS安装和配置
安装:
1、从CVS网站(www.cvshome.org)免费获得CVS的安装源码文件,例如下载:
cvs-1.11.tar.gz文件。
2、将cvs-1.11.tar.gz文件拷贝到配置管理服务器上,本例以SCOUnixOpenserver服务器为例。
3、用gzip解压缩
$gzip–dvfcvs-1.11.tar.gz/*可以用Winzip把cvs-1.11.tar.gz解开成cvs-1.11.tar,注意在WINZIP提问是否要全部解开时,回答NO。
*/
4、再用tar命令解开文件:
$tarxvfcvs-1.11.tar
5、到解压缩后的CVS目录:
$cdcvs-1.11
6、在cvs-1.11目录下执行以下命令:
$./configure/*./configure--prefix=/usr*/
$make
$makeinstall
7、如果没有出现任何错误提示,表示安装成功。
可用以下命令验证CVS可执行文件已经安装成功:
$find./-namecvs–print(默认在/usr/local/bin下)
配置:
服务器端配置:
1、创建项目用户组和用户帐号
以超级用户身份创建项目开发用户组和用户帐号(包括CVS管理员用户),假设以informix作为项目用户组,包含成员:
Richard、Paul、marry,CVS系统管理员为:
cvsroot
创建项目用户组informix:
$groupaddinformix
创建informix组内用户帐号命令:
$useradd–ginformixusername–ppassword
分别用Richard、Paul、marry、cvsroot代替username为项目组成员及CVS系统管理员创建组内用户帐号和密码。
说明:
用户组是用于进行群组权限控制的安全机制
用户帐号是用于控制系统访问权限的安全机制
2、创建CVS仓库
假如以/src/master作为CVS仓库的位置,以CVS系统管理员(本例为:
cvsroot)身份登录,:
$mkdir/src
$mkdir/src/master
赋与同组人有读写的权限:
$chmod771.(或者770也可以)
3、修改配置文件(配置口令服务器)
配置口令服务器包括以下两步:
第一步:
在CVS服务器的/etc/services文件中添加一行:
cvspserver2401/tcp
即执行命令:
$echocvspserver2401/tcp>>/ect/services
或者用vi/etc/services实现。
第二步:
如果使用的是Radhat6.2及以前的版本,或者其他使用inetd服务器的unix/linux版本,则在/etc/inetd.conf文件的末尾添加:
cvspserverstreamtcpnowaitroot/usr/local/bin/cvscvs-f–allow-root=/src/masterpserver
说明:
这是一整行文字,中间没有回车或者换行
本文件修改后需要重新启动系统才能生效。
CVS口令服务器不是一个单独的应用软件,而是包在inetd/xinetd超级服务器之内的一个程序,所以启动口令服务器其实是启动inetd/xinetd超级服务器:
$/etc/rc.d/init.d/inetdrestart
也可能是$/etc/init.d/inetdrestart
或者$/etc/init.d/xinetdrestart
测试CVS口令服务器是否正常工作:
在CVS服务器上执行如下命令:
$telnetlocalhost2401
CVS服务器必须通过这个测试才能正常提供远程访问服务。
如果输出结果是connectionrefused或connectiontimedout,则CVS口令服务器未能正常工作,需检查前述工作是否正确完成。
如果任何输出都没有,仅仅是光标在闪烁,请键入“hi”并回车。
如果此时给出的反应是“cvs[pserveraborted]:
badathprotocolstart:
hi”,则CVS口令服务器已开始正常工作
4、仓库初始化
cvs–d/src/master/project1init/*进行仓库初始化,自动产生相应的目录本例为:
/src/master/project1*/
安装完成后,可以在/src/master/project1目录下看到系统创建的一个CVSROOT子目录。
客户端配置:
用户从网络上以自己的用户帐号登录时,为访问配置库需要对环境进行一些配置,在文件usr/user_name/.profile加入:
CVSROOT=:
pserver:
user_name@CVS_IP_address:
/src/master/project1
exportCVSROOT
(其中,使用用户帐号代替usr_name,使用CVS的IP地址代替CVS_IP_address)
在PATH中加入CVS运行文件路径:
/usr/local/bin
例:
客户端:
/*指定仓库根路径*/
vi.cshrc或者.kshrc
setenvCVSROOT:
pserver:
paul@192.168.0.241:
/src/mastert/jypcsvr
vi.profile
CVSROOT=:
pserver:
paul@192.168.0.241:
/src/master/jypcsvr
exportCVSROOT
重新登录或执行:
$./profile使修改的配置生效。
至此,客户端的配置完成。
测试远程访问:
在命令提示符下执行:
$cvslogin
如果根据提示输入在CVS服务器上建立的用户帐号口令之后,没有任何信息显示,则测试成功。
反之,如果显示连接失败、口令不正确等,则表明安装配置有误,需重新检查上述配置是否正确。
CVS常用命令
此使用手册使用了下面的规则:
Ø命令和选项的参量全部用大写字母。
Ø可选项出现在方括号[]之中。
Ø如果你必须从一个集合选择一项,选项用竖线分隔,就像“x|y|z”一样。
Ø复数或省略符表示多项,通常用空格分隔。
例如,FILES表示一个或多个文件,但[FILES]表示零个或多个文件。
ØREV常用来代表一个版本参数,通常是一个版本号或一个标签号。
CVS命令的一般格式
CVS命令遵从下面的形式:
cvs[global_options]command[options][files]
全局选项
1、-dREPOSITORY
这个选项用于指明一个源代码库。
表达式包含连接、用户名、主机名以及路径。
如果表达式指明了连接方式,一般的语法是这样的:
:
METHOD:
USER@HOSTNAME:
PATH_TO_REPOSITORY
2、-eEDITOR
如果提交信息时在命令行中没有用-m选项说明,就调用EDITOR。
一般情况下,如果你没有用-m选项来提交信息,CVS就会调用编辑器。
如果在commit命令中同时使用全局选项-e和-m,-e就被忽略,而在命令行中给出的提交信息将优先使用。
3、--help[COMMAND]–H[COMMAND]
这两个选项相同。
如果不指明命令,将在标准输出时打印基本使用信息。
如果指明命令,将输出这个命令的使用信息。
4、--help-options
打印出CVS所有全局选项的列表,以及简短的说明。
5、--help-synonyms
打印出CVS命令和对应的所写形式的列表(例如,“up”是“update”的缩写形式)。
6、-q
这个选项让CVS停止输出不重要的信息。
信息的“重要”性取决于各个命令。
例如,在update命令中,通常CVS进入工作拷贝的每个子目录时输出的信息就被忽略,但是修改或升级后的文件的单行状态信息行仍然输出。
7、-Q
这个选项让CVS停止所有输出,除了要完成命令绝对需要的信息。
当然如果命令的唯一目的是生成一些输出(像diff命令),仍然会给出输出结果。
但是,那些结果和输出的信息无关的命令(像update命令)就什么也不输出。
8、-t
跟踪一个CVS命令的执行。
这个选项使CVS输出它在执行一个命令的过程中每一个步骤的信息。
常用命令举例
1、Login登录
命令:
cvslogin
说明:
用CVS管理员在配置管理服务器上为你建立的用户帐号登录,系统会提示你输入口令,输入正确后,系统不会出现任何错误信息。
2、import命令
cvsimport–m“initialimport”SRC-file-directory-nameVENDORSTART
说明:
用你的开发机器上的源代码目录代替SRC-file-directory-name,执行成功后,你的源代码已经加入到配置库中。
将本地文件导入到服务端后,本地并没有跟服务端建立联系,如要建立联系,必须再将模块从服务器端配置库检出才行。
举例:
1)src:
本机开发文件目录;
2)执行:
cvsimport“initialimportmycodebywxp”srcVENDORSTART
3)执行:
cvsco–dtestsrc
-d:
在本机自动建立后面紧跟的目录(本例为:
test)
检出src模块到本机test目录。
3、checkout登出文件
将一个模块从源代码库检查并导出到一个工作拷贝中。
如果工作拷贝不存在,就新创建一个;如果存在就升级更新它。
登出文件的命令:
$cvscheckoutmodule-name
上述命令把相关目录(module-name)下文件登出到本地工作拷贝目录,如果已经做过一次checkout,可以使用update命令进行更新:
$cvsupdatefile_name
update自动比较CVS仓库中文件和当前自己文件的最后修改时间,导出最新的文件到本地工作拷贝目录。
$cvscheckout–dlocal-directorymodule-name
上述命令在本地自动创建工作拷贝目录local-directory,并把配置库相关目录(module-name)下文件登出到本地工作拷贝目录local-directory。
使用cvsupdate–rversion可以取出以往版本。
4、commit提交修改后的文件
文件在本地修改后,需要更新CVS仓库中的文件,登入文件的命令为:
$cvscommit-m“description”file_name
commit为登入命令,file_name为登入的文件名,版本仓库为每次登入的文件作一次内部版本记录。
-m后引号内为注释内容。
文件在提交之前,需要做一次更新本地文件命令,因为在你修改本机工作拷贝中的文件时,其它人可能已经将配置管理库中与你的工作拷贝对应的文件做了修改,所以首先执行update命令将配置管理库中最新的修改合并到你的工作拷贝中。
$cvsupdatefile_name
5、add增加文件或目录
在第一次使用import命令导入到配置库中后,有时需要在往配置管理库中某些目录中添加文件,此时使用add命令。
步骤:
1)从配置库中捡出要添加文件的模块到本机工作拷贝;
2)将需要添加的文件拷贝到在工作拷贝中捡出的相应文件目录
3)执行add命令通知cvs需要添加文件,命令格式:
cvsaddfile-name
4)往配置管理库提交添加文件,命令格式:
cvscommit–m“description”file_name
6、删除和修改目录和文件
删除目录前首先确认所有对文件的修改都已经登入CVS配置库,文件删除后,仍然可以从CVS配置库中登出老版本。
删除文件:
删除文件分为以下几步:
第一步,从工作拷贝目录中删除文件,如下命令:
$cvsrmfile_name
第二步,通知CVS准备删除该文件,如下命令(命令中file_name同上):
$cvsremovefile_name
第三步,从CVS仓库中删除文件,如下命令(命令中file_name同上):
$cvscommit-m“description”file_name
删除目录:
与删除文件相似,目录被删除后仍然能够访问到该目录的老版本。
要删除一个目录,首先需要删除目录中的所有文件,使该目录成为一个空目录,命令如下:
$cvsupdate-P
清除代码:
$cvsrelease-ddirectory
directory为文件目录,该命令清除了所有目录下的文件。
访问被删除的目录和文件:
文件和目录被删除后,可以通过命令登出旧版本,参看下面“版本操作”中“版本查询”一项。
如果不知道旧版本号,参看下面“查看历史记录”中“使用log查看”一项。
7、版本操作
查看版本差异:
版本管理的文件多次登出和登入,使得本地的文件被多次修改,通过使用版本比较命令可以比较版本更新的记录。
比较版本差异使用下面命令:
$cvsdiff-rrelease_numberfile_name
diff命令把当前版本和命令中列出的版本号进行比较,输出两个版本的不同处。
登出旧版本:
如果在当前编辑目录里希望查询到以前的版本号内容,可以通过版本管理的update命令从CVS仓库中登出旧版本,登出命令为:
$cvsupdate-rold_releasefile_name
通过输入旧版本号,可以登出旧版本,通过编辑器打开该版本进行查询。
如果没有旧版本号,使用日志命令进行查询。
统一版本:
为方便版本识别和管理,为开发中的项目进行版本编号,版本编号分为系统编号和用户编号。
系统编号:
向项目添加新文件时,其版本号第一位同本目录最高版本第一位,第二位是1。
如一个目录下三个文件版本号分别为1.5,2.8,4.11,则新文件版本号为4.1。
用户编号:
通过命令将所有文件统一为一个版本号,指定的版本号必须大于所有当前版本号。
版本定义命令为:
$cvscommit-rrelease_number
tag版本标签:
版本标签是符号化的版本号码,它直观、易于记忆和管理。
版本标签大量用于重要的里程碑式版本的标记。
例如alpha初始调试版、beta调试版、release发布版等。
CVS版本控制功能主要体现在tag上,标记的作用是同时记录了作标记时的所有文件的版本。
需要的时候可以一次导出这些版本不一的文件,通常用于项目开发达到一定的目标时使用的。
标记目录的版本标签命令:
$cvstagrelease_numbermodule-name
标记文件的版本标签命令:
$cvstagrelease_numberfile_name
版本标签查看命令(注:
查看文件时需要加上文件名,查看目录则不需要最后一项):
$cvsstatus-v(file_name)
导出版本标签的命令:
$cvsco-rrelease_number
查看版本标签日志命令:
$cvslog-r
rtag版本标签:
rtag标签按照日期或者版本号来标记cvs。
-Ddate选项标记该日期之前的最近版本。
-Rtag标记含有tag版本标签的文件。
-F与上面匹配使用。
找不到匹配时使用最新版本。
rtag命令:
$cvsrtag-Ddaterelease_numbermodules
该命令查看date日期前modules最新版。
8、查看历史记录
log查看历史记录:
通过日志文件查看,可以查询到每个文件的历史记录,包括版本号的变化和文件内容的变化。
日志文件查询命令:
$cvslogfile_name
log命令可以查询到该文件的所有版本记录,通过该版本记录可以查看文件内容。
也可以使用log命令查询该目录下所有文件版本信息:
$cvslog
查看文件版本日志记录:
使用log命令可以查询文件一个版本的日志记录,查看命令为:
$cvslog-rrelease_numberfile_name
日志记录查看结果包括总版本数、当前版本、版本建立日期、时间、作者和日志信息。
annotate查询版本和内容:
另外使用annotate命令也可以查询文件,不同的是该命令用于查询文件每一行的最后一次修改时间、修改者、添加/修改时文件的版本号。
这个命令不能报告那些行被删除或替换,要通过上面的diff命令来实现这些查看。
使用annotate命令:
$cvsannotatefile_name
9、版本分支
创建分支:
命令列表
1、add[OPTIONS]FILES
✓要求——工作拷贝,源代码库
✓修改——工作拷贝
向一个已经存在的项目中增加一个或几个新的文件。
为了确认有效必须源代码库关联,而事实上文件不会出现在源代码库,直到接着执行提交命令。
选项:
✓-mMESSAGE
把记录MESSAGE作为文件的创建信息或对文件的描述。
这和修改前的登录信息不同——每个文件只有一个描述,而且描述是可选的。
2、checkout[OPTIONS]PROJECT(S)
✓要求——源代码库
✓修改——当前目录
将一个模块从源代码库检查并导出到一个工作拷贝中。
如果工作拷贝不存在,就新创建一个;如果存在就升级更新它。
选项:
-A
复位粘着的标签、日期。
-DDATE
导出不迟于DATE的最新版本。
-dDIR
在名为DIR的目录中创建一个工作拷贝,而不是创建一个和检查模块同名的目录。
如果检查的只是一个项目的一部分,而且那一部分位于项目顶层之下,则本地的空目录被省略。
-f
如果指定的标签或日期没有找到,强制使用最初的版本。
-jREV[:
DATE]或–jREV1[:
DATE]–jREV2[:
DATE]
联合(合并)开发的两条线路。
如果只有一个-j,它就会把REV的普通祖先版本的所有修改都合并到工作拷贝中。
“普通祖先”是指工作拷贝中的版本和REV版本的共同的最近的祖先版本。
如果给出了两个-j选项,就把工作拷贝中从REV1到REV2的修改合并进去。
-l
本地操作。
只检查项目最高层的目录。
不处理子目录。
-P
从工作拷贝中删除空目录。
-p
将文件导出到标准输出,而不是导出到文件。
-R
(默认情况下)也导出子目录。
3、commit[OPTIONS][FILES]
✓要求——工作拷贝,源代码库
✓修改——源代码库(和工作拷贝管理域)
从一个工作拷贝向源代码库提交修改。
选项:
-f
强制提交一个新版本,即使文件没有修改。
提交命令不递归执行这个选项。
-l
本地错作。
只提交当前目录的修改。
不进入子目录。
-mMESSAGE
用MESSAGE的内容作为登录信息而不是调用编辑器。
-R
不仅提交当前目录(默认情况下)的修改也提交子目录的修改。
-rREV
提交到REV版本。
4、diff[OPTIONS][FILES]
✓要求——工作拷贝,源代码库
✓修改——无
显示两个版本之间的差别。
当没有选项调用时,CVS将源代码库基础版本和(可能没有提交)工作拷贝的内容相比较。
“基础”版本是从源代码库获得的这个工作拷贝的最新版本;注意,如果其他人提交了修改而这个工作拷贝还没有升级更新,在源代码库就会有更新的版本。
选项:
-DDATE
比较不迟于DATE的最新版本。
-l
本地操作。
-R
递归操作。
-rREV或-rREV1–rREV2
比较指定版本之间的差异。
使用一个-r选项的时候,比较REV版本和工作拷贝中的这个文件。
使用两个-r选项的时候,比较REV1和REV2的所有文件(当然和工作拷贝是无关的—)。
两个版本的顺序是任意的——REV1不一定是一个比REV2早的版本。
不使用-r选项的时候,显示的是工作文件和其基础版本之间的差异。
Diff的兼容选项:
-B
忽略那些仅仅是插入或删除空行的差异。
-b
忽略空格数目的差异。
这个选项将所有的空格序列同样对待,忽略行末的空格。
-c
用上下文差异格式显示输出,缺省情况表示每一个差异涉及三行上下文。
-i
比较时对大小写不敏感。
将一个字母的大写和小写同样看待。
-u
以统一的格式显示输出。
-w
忽略所有的空格差异,即使一个右空格而另一个没有。
实际上,它使-b选项得到加强。
5、export[OPTIONS]PROJECT(S)
✓要求——源代码库
✓修改——当前目录
从源代码库中输出文件创建一个项目树,这个项目树不是一个工作拷贝(没有CVS/administrative子目录)。
主要用于发布打包。
选项:
-DDATE
输出不迟于DATE的最新版本。
-dDIR
输出到DIR目录。
-f
如果给定的标签或日期导致没有找到任何东西,则强制使用最初的版本。
-l
本地操作。
-N
不去掉空目录。
-P
去掉空目录。
-R
递归操作。
-rREV
输出版本REV.
6、history[OPTIONS][FILENAME_SUBSTRING(S)]
✓要求——源代码库,CVSROOT/history
✓修改——无
显示源代码库活动的历史。
选项:
-a
显示所有用户的历史(缺省情况下只显示自己)。
-c
报告提交。
-DDATE
显示从DATE以来的数据。
-e(Everything)
报告所有类型的记录。
-fFILE
报告关于FILE的最新事件。
-l
显示代表每个项目最后(也就是最新)事件的记录。
-mMODULE
这个选项提供关于MODULE(项目名)的完全报告。
-nMODULE
报告关于MODULE的最新事件。
-o
显示检查记录。
-pREPOS
显示源代码库中一个特定目录的数据。
-rREV
显示与某些版本有关的记录。
-T
报告所有关于标签的事件。
-tTAG
显示自从标签TAG最后加到历史文件以来的记录。
-uUSER
显示和用户USER有关的事件。
-w
显示与调用history命令所在工作目录相关的记录。
7、import[OPTIONS]REPOSITORYVENDOR_VARRELEASE_TAG(S)
✓要求——源代码库,当前目录(源文件目录)
✓修改——源代码库
将新的源文件导入到源代码库。
一般用import命令来立即增加很多个文件或目录,或者创建一个新的项目。
要增加一个文件,应该用add命令。
选项:
-d
将导入时间而不是当前时间作为文件的修改时间。
-mMESSAGE
将MESSAGE记录为导入日志信息。
8、initNEW_REPOSITORY
✓要求——新源代码库的位置
✓修改——源代码库
创建一个新的源代码库。
9、log[OPTIONS][FILES]
✓要求——工作拷贝,源代码库
✓修改——无
显示一个项目或项目中文件的日志信息。
它的输出格式是这样的:
头部包含
文
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CVS 使用手册