CVS使用

基本概念

CVS是一个功能强大的版本控制系统。采用C/S的架构,当安装上之后,同时就具备了客户端与服务器端。
CVS服务器的一般原理是在服务器上创建一个CVS仓库,多个客户端在各自的主机上创建沙箱,需要修改仓库的文件时,客户先在沙盒对复本进行操作,最后执行命令对仓库进行更新。

 

CVS的命令格式

CVS命令的一般格式 cvs [cvs-option]  cmd [cmd-option] [arguments]
CVS选项:用来确定CVS整体的行为
-q                    禁止信息显示。
-d repo_path  通知CVS在执行命令时使用哪个仓库
-e editor          通知cvs在编辑信息时使用哪个编辑器
-n                    不改变任何文件
-z level            当在网络上传输时使用的压缩级别
 

创建仓库

cvs -d repo_root_dir init 标准的根文件夹位于/var/lib/cvs/下,项目就存放在此目录的子目录中,引目录中的CVSROOT文件夹中包含CVS服务器的配置文件等。


导入项目

cvs -d repo_root_path import project_path project_name_tag release_tag
执行此命令后会出现编辑窗口,输入有关项目的提示信息(vi),也可以通过rcsinfo文件设定。
若仓库不在本机,则需要设置远程服务器的路径
cvs -d [:method:] [[ [user] [:passwd]@]hostname[:[port]]]/path
method是连接仓库的协议
local      连接本地机器
ext        使用系统外部的ssh
pserver 使用passwd server
gserver 使用kerberos5连接
fork       将本地机器作为远程机器来连接

 

创建沙箱
cvs -d repo_path checkout project_name

调出项目pn的文件夹到当前目录下。此时更可以对沙箱中的文件进行修改,此后在沙箱中操作都不需要指明服务器路径。
check的选项
-r   特定版本的

 

删除沙箱
cvs release

 

提交变更后的数据
cvs commit
commit的选项
-l    只提交当前目录下文件,不递归
-R   递归提交变性(默认)
-r    revision  重新修订版本号

 

检查文件的状态
cvs status
status的选项与commit的选项相同


如果沙箱中的版本比当前版本还新,则cvs commit会失败。此时必须使用cvs update来合并有变更的文件,然后重新执行cvs commit

更新沙箱

update会将仓库中的与当前版本有变更的文件下载到沙箱中,update命令的-d参数,可以下载新的目录。对于存在差异的文件,若不同的版本在不同行有差异,则合并两个版本。若在同一行,则会汇报冲突并创建一个文件,包含两个版本的差异。本地版本的文件会以.#file.revision文件中,合并后的文件以原文件名存储,因此可以手动查看二者差异,修改后提交给仓库。
update的选项:
-d  下载新目录
-P  不下载空目录
-j  revision 合并修订版本
-j  revi1 -j revi2 将两个版本的差异合并到沙箱中
-A  重设tag,date或keyword选项
-C  以仓库的副本覆盖沙箱中的文件
-l  只在当前目录中操作,不递归
-R  递归
-D date
-r revision
-r tag
根据日期、版本或标记来决定要调出哪个修订版本。


增加文件
在沙箱中对应的子目录,执行cvs add filename对目录也适用,要向仓库提交需要执行cvs commit

 

移除文件
在沙箱中对应的子目录,执行cvs remove filename,随后执行cvs commit
remove具有选项l R 选项f表示 从沙箱中移除此文件

 

检查日志
查看各个文件的版本历史:cvs log

 

二进制文件与封装字符串
CVS在比较文本文件时使用MERGE方式,而对于doc等二进制文件,则无法再使用比较合并的方式,因此CVS提供对二进制文件的COPY模式,如果出现冲突,就把有冲突的版本提供给用户,让用户可以手动修改变更之处再重新提交。
要加入二进制文件到CVS时使用add的kb选项
cvs add -kb file.doc
对于文件过多时,update和import,可以使用-W来指定通配符
-W "wildcard option 'value'"
-m 指出符合模式的文件所要采取的合并做法,-m的值有COPY MERGE
-k 指出黏土模式的文件所要采取的关键字扩展模式

 

指定默认的命令选项
可以在.cvsrc文件中设置默认选项以减小输入的时间。.cvsrc文件的格式是每行一个命令,每行以某个命令开关,后面接上想要的默认选项
如checkout -P

 

关键字扩展
在文件中可以加入关键词,当CVS在取文件时,会查找特定的关键词,并对关键词做替换扩展,下面是常用的关键词
Author    提交最新版本的用户名称
Date   最新修订版提交时的日期
Header    包含文件相关信息的标题,包括作者、日期和版本号等
Name   文件被调出时所使用的标记名称。
Log   记录文件本身的提交信息、日期和作者。
Revision  内部修订版编号,只用来标记单个文件,而不是整个项目。
使用admin add checkout export及update时,可以修改关键字扩展的结果。扩展模式以-k和-A来设定,下面是常用的模式
-kb     禁止关键字扩展及行尾字符转换。用来指定二进制文件。
-kk    只产生关键字的名称而不是名称和内容
-ko   产生文件上次被提交之前的关键字版本。
-kv    只产生关键字的内容而不是名称和内容。
-A   重设所有沙箱的日期和标记,把关键字扩展模式设为文件的默认模式,并取出最新的修订版。
这些关键词在文件中用$keyword$的形式插入。

 

高级使用

由于CVS是对每个文件都维护一个版本号,因此项目的同一版本可能包含不同的文件版本,在管理上带来麻烦,新一代的版本控制系统如SVN工具已经开发出来以替代CVS。SVN对版本控制更加合理。CVS的功能介绍到此结束。有空的话,写一些SVN的使用。 

 

 

 

 

你可能感兴趣的:(服务器,扩展,cvs,Path,wildcard,版本控制系统)