全部博文(512)
分类: LINUX
2008-03-26 17:57:46
cvs用法总结(1)--cvs命令格式
读书笔记,中文名"版本控制之道-使用cvs",英文名"Pragmatic Version Control-Using CVS"。以下内容出自
英文版附录,中文内容来自中文实体书,使用范例是个人总结(总结出来,以后万一忘了可以查,呵呵)。
一. CVS Command Format/cvs命令格式
cvs
Global Options
/
全局选项
-
H Displays usage information
for
command.显示命令用法
-
Q Cause CVS to be really quiet.使得cvs不输出信息
-
q Cause CVS to be somewhat quiet.使得cvs较少输出信息
-
r Make checked
-
out les read
-
only.使得签出的文件只读
-
w Make checked
-
out les read
-
write (
default
).使得签出的文件可读写(默认)
-
l Turn history logging off.关闭历史纪录
-
n Do not execute anything that will change the disk.不执行任何会修改磁盘文件的操作
-
t Show trace of program execution,
try
with
-
n.实现程序执行的轨迹(试着和
-
n一起使用)
-
v CVS version and copyright.cvs版本和版权说明
-
b bindir Find RCS programs in bindir. 在
"
bindir
"
目录中找到rcs程序
-
T tmpdir Use tmpdir
for
temporary les. 将
"
temdir
"
目录作为保存临时文件的目录
-
e editor Use editor
for
editing log information.使用
"
edit
"
来编辑日志信息
-
d CVSROOT Overrides CVSROOT environment variable as the root of the CVS tree. 取代CVSROOT环境变量作为cvs的根目录
-
f Do not use the
/
.cvsrc le. 不使用
/
.cvstc文件
-
z # Use compression level #
for
net trafc. 在网络通信中使用第
"
#
"
级压缩
-
a Authenticate all net trafc.炎症所有网络通信
-
s VAR
=
VAL Set CVS user variable.设置CVS用户变量
使用范例:
1.察看cvs版权信息
cvs -v
2.察看cvs帮助
cvs -H
二. Flag Characters/标记字符
在更新操作期间,CVS将显示一列前面带有标志字符的文件名。下面列出了这些字符代表的意义:
A 文件 文件已经从本地添加到CVS,但是还没有存放到仓库中
C 文件 当试图更新文件时检测到了一个冲突(也就是说,在本地修改的代码和与在仓库中被修改的代码有冲突)。这个文件在本地的副本中包含冲突记号,而文件原来的版本存放在一个叫做.#文件.version的新文件中
M 文件 文件已经在工作区中被修改,需要存回到仓库以使仓库保持更新。
P 文件 作用和
"
U
"
相同,
"
P
"
标志表示服务器使用了一个补丁文件将这个文件更新成最新的。
R 文件 文件已经从仓库的工作副本中移走(使用 cvs remove 命令)。当运行cvs commit命令后,这个文件在仓库中的版本才会被移走
U 文件 文件的本地副本已经按照仓库中的最新版本更新了。只有当文件在仓库中的版本比本地版本新以及有一个新文件在仓库中而没有在本地区时才会发生。
?
文件 文件只存在于工作区中但是仓库中没有这个文件的任何信息。可以使用cvs add 命令来添加这个文件,或者通过修改.cvsignore
文件来让cvs忽略这个文件
对C标记的测试:在两个工作区中同时修改同一个版本的文件number.txt,将其中的一行修改为不同的内容,然后commit提交一个,update另一个显示:
cvs update
cvs server: Updating .
RCS file: /export/home/cvsroot/test/aoxj/cvstest/number.txt,v
retrieving revision 1.6
retrieving revision 1.7
Merging differences between 1.6 and 1.7 into number.txt
rcsmerge: warning: conflicts during merge
cvs server: conflicts found in number.txt
C number.txt
此时使用ls -a可以看到文件.#number.txt.1.6生成
. .#number.txt.1.6 .. CVS number.txt
打开merge后的number.txt文件,内容为
1
15
2
25
3
<<<<<<< number.txt
45
=======
46
>>>>>>> 1.7
三. CVS Environment /cvs 环境
环境变量通常和CVS一起使用.
CVSROOT 用来指定仓库的默认位置以及访问方法,设置了这个变量就无需使用CVS的全局-d选项.
在windows中,可以增加CVSROOT到系统环境变量中,或者使用命令行:
c:\
>
set CVSROOT
=
:pserver:username@hostname:
/
cvsrootpath
在unix/linux中,对于bash,zsh,需要添加到profile文件中
export CVSROOT
=
:pserver:username@hostname:
/
cvsrootpath
一. login登录
cvs login
会提示要求输入密码
二. logout 退出
cvs logout
三. import 将源文件导入到cvs仓库
cvs import [-d] [-k subst] [-I ign] [-m msg] [-b branch] [-W spec] repository vendor-tag release-tags...
-d 将文件的修改时间作为导入时间
-k sub 设置默认的RCS关键字替换模式
-I ign 忽略文件(使用!重置)
-b bra 分支的标识
-m msg 日志信息
-W spec 包装指定行
使用范例
(1)将一个新项目导入到仓库
1.假设项目在本地文件夹testproject下,进入该目录,清除里面所有不需要提交的内容
2.执行命令
cvs import -m"test log message" -ko test/aoxj/ testprojuect test
其中test/aoxj/指在仓库中的位置,testprojuect是项目名称,test发布标识
3.可以用check 从仓库中获取这个新导入的项目
cvs co test/aoxj/testproject
(2)创建项目的另一个方法:建立一个空仓库在添加一个新项目
1.迁出仓库的顶级目录
cvs co -l -d tmp .
2.在这个迁出的工作区中建立新项目,使用add命令加入仓库
makedir newproject
cvs add newproject
3.测试删除这个签出的工作区
cvs release -d tmp
4.再次签出项目
cvs co newproject
四. add 添加新文件/目录
cvs add [-k rcs-kflag] [-m message] files...
-k 使用rcs-kflag添加具有指定kflag的文件,通过使用"-kb"添加二进制文件到仓库中
-m 使用message来创建日志
使用范例:
(1)添加二进制文件
cvs add -kb -m"add a binary file" test.doc
如果不使用-kb,则默认是按照text格式提交,会破坏文件。
(2)忘记-kb提交二进制文件的补救
如果是进行了add但是还没有commit,则可以使用实现方法:
1.忘了加-kb
cvs add test.doc
2.本地改名
mv test.doc temp.doc
3.删除文件
cvs remove test.doc
4.取回原来的文件
mv temp.doc test.doc
5.再次add并commit
cvs add -kb test.doc
cvs commit test.doc
如果是commit之后才发现错误,最安全的方式是修改CVS仓库中的标记,然后再更新cvs仓库.
1.错误的commit了文件
cvs add test.doc
cvs commit test.doc
2.重置cvs仓库的标记
cvs admin -kb test.doc
3.重置本地工作区的标志
cvs update -A test.doc
4.从正确的文件覆盖本地工作区的文件
cp /**/test.doc test.doc
5.提交到仓库
cvs commit -m "new binary file" test.doc
五.admin 管理仓库
cvs admin rcsoptions ...
-k 使用"rcs-kflag"来改变与一个文件相关的标记,常用于将文件的状态修改为二进制(使用"-kb")
六. release 删除本地模块
cvs release [-d] directories ...
-d 删除给定目录的本地副本
使用范例:
cvs release -d test/aoxj/testproject
这样会将本地工作区中的test/aoxj/testproject目录删除,但是不影响cvs仓库中文件
七. remove 从cvs仓库中删除条目
cvs remove [-flR] [files ...]
-f 在移除之前删除文件
-l 只有本目录,不包括子目录
-R 操作应用于子目录