CVS命令说明详解
- 格式:doc
- 大小:195.50 KB
- 文档页数:18
1.CVS环境变量设置在使用CVS命令时,最好先设置环境变量CVSROOT ,这样能够简化输入的命令内容。
CVSROOT=:pserver:user@server#port:/path/to/cvsroot●pserver是访问方式,口令认证的意思,这是最常用的方式,其他还有gserver,kserver,ext●user是CVS服务器的用户名,●server是CVS服务器的名称或者IP地址●/path/to/cvsroot是你的CVS服务器的CVSROOT目录,根据你的CVS服务器设置做修改或者询问管理员你可以把设置放到你的shell的profile里(.bash_profile,.profile等)这样就不用每次敲一长串命令了SSH加密口令和数据流的环境变量:CVSROOT=:ext:user@server#port:/path/to/cvsrootCVS_RSH=ssh实际上没有CVSROOT也可以,你可以每次用cvs -d :pserver:user@server#port: /path/to/cvsroot来访问,而且它将忽略CVSROOT环境变量,也许你会笑我只有疯子才这么用,不过,cvs可以把每次使用的命令参数放到一个文件中,所以在~/.cvsrc中加入cvs -d :pserver:user@server#port:/path/to/cvsroot即可,它最大的好处是修改了立刻生效,而且它的优先级高于CVSROOT环境变量,到时候不要傻乎乎地来问我,我的环境变量真么不起作用了。
2.CVS仓库初始化CVS版本库的初始化。
cvs init3.一个项目的首次导入cvs import -m " comments" project_name vendor_tag release_tag 执行后:会将所有源文件及目录导入到/path/to/cvsroot/project_name目录下vender_tag: 开发商标记release_tag: 版本发布标记4.登录CVS服务器$cvs login这时候cvs会问你口令,请把你在CVS服务器上的口令敲进去。
如果没有任何错误信息,恭喜你,成功了!成功登录后将建立一个~/.cvspass文件,保存你的口令,以后就不用输入口令了,也可以把你的口令设置到CVSROOT环境变量中。
CVSROOT=:pserver:user:password@server#port:/path/to/cvsroot5.cvs命令格式cvs [global_opts] command [command_opts] [command_args]●Global options 属于左边cvs的,是全局的●command_opts 属于左边command的,是局部的cvs --help-commands查看命令列表cvs -H command/cvs -help command 查看该命令的选项注:如果你每次使用一些命令都带同样的参数的话,可以把它们放到~/.cvsrc文件中去update -cdiff -cadd -kbcvs -Qcvs global-option comand comand-option arguments6.CVS的日常使用CVS使用流程a.checkout 当本地没有working copy时使用b.staus 检查服务器上是否有新版本c.update 如果有,则用update同步文件d.做你自己的修改,并保证正确e.update 看是否有人修改了你的文件f.如果有冲突,合并冲突mit 提交你的修改,如果因为又有人提交修改而失败,回到e步h.回到b步1)导出仓库中代码到本地工作目录cvs checkout [-d dir ]module_namemodule_name可以暂时理解为目录名,它会在本地但前目录下建立module_name 目录,再把服务器上说有module_name目录下的文件copy到本地module_name目录下。
如果指定-d,则copy到本地dir目录。
注意:第一次checkout后,就不要再通过cvs checkout来同步文件了,而是要进入该目录下进行具体文件的版本同步(添加,修改,删除)操作。
2)同步本地文件cvs update filename将本地文件同步到最新的版本:不指定文件名,cvs将同步所有子目录下的文件。
最好每天开始工作前或将自己的工作导入到CVS库里前都要做一次,并养成"先同步后修改"的习惯,和Virvual SourceSafe不同,CVS里没有文件锁定的概念,所有的冲突是在commit之前解决,如果你修改过程中,有其他人修改并commit到了CVS库中,CVS 会通知你文件冲突。
<<<<<<< filename你文件上的内容服务器上文件的内容>;>;>;>;>;>;>; latest revision number in the repository由你确认冲突内容的取舍。
也可以多人协商解决,修改完成后去掉文件中的冲突标志conflict:多人修改同一文件的同一区域这就叫冲突,它必须由人来解决,CVS不处理冲突,它只是告诉你存才冲突3)提交本地修改后的文件到CVS库cvs commit -m "write some comments here" file_name注意:CVS的很多动作都是通过cvs commit进行最后确认并修改的,最好每次只修改一个文件。
在确认的前,还需要用户填写修改注释,以帮助其他开发人员了解修改的原因。
如果不用写-m "comments"而直接确认`cvs commit file_name` 的话,cvs会自动调用系统缺省的文字编辑器(一般是vi)要求你写入注释。
修改某个版本注释:每次只确认一个文件到CVS库里是一个很好的习惯,但难免有时候忘了指定文件名,把多个文件以同样注释commit到CVS库里了,以下命令可以允许你修改某个文件某个版本的注释:cvs admin -m 1.3:"write some comments here" file_name4)查看状态cvs status filename状态报告,类似这样:File:foo.c Status:Up-to-dateWorking revision: 1.1.1.1'Some Date'Repository revision: 1.2/home/cvsroot/cvstest/foo.c,vSticky Tag:(none)Sticky Date:(none)Sticky Options:(none)这里最重要的就是Status栏,这里总共可能有四种状态:●Up-to-date:表明你要到的文件是最新的●Locally Modified:表明你曾经修改过该文件,但还没有提交,你的版本比仓库里的新.●Needing Patch:表明有个哥们已经修改过该文件并且已经提交了!你的版本比仓库里的旧.●Needs Merge:表明你曾经修改该文件,但是偏偏有个不识相的也修改了这个文件,而且还提交了!5)查看修改历史和注释信息cvs log file_name6)添加文件和目录cvs add new_file_namecvs add -kb new_file_namecvs add dir_nameCVS一般只处理文本文件,它会扩展keyword(宏)并转换行结束符。
对于图片,Word文档等非纯文本的项目,需要使用cvs add -kb选项,否则有可能出现文件被破坏的情况然后确认修改并注释cvs ci -m "write some comments here" new_file_name7)删除文件将某个源文件物理删除后cvs remove file_name然后确认修改并注释cvs ci -m "write some comments here" file_name注意:很多cvs命令都有缩写形式:commit=>ci; update=>up; checkout=>co; remove=>rm;8)删除空目录cvs update –P9)修改文件名cvs里没有cvs move或cvs rename,因为这两个操作是先cvs removeold_file_name,然后cvs add new_file_name实现的。
10)目录结构同步如果在你checkout后,有人添加了新的文件或目录,你需要把他们取出来cvs update -d11)放弃本地的修改(undo)●如果修改来了本地文件,不想提交,想重新取新文件cvs update -C filename它会先把你的本地文件改名建议:大家把checkout的文件缺省为readonly,把"cvs -r"添加到~/.cvsrc文件中。
这样,你每次修改一个文件前,先cvs edit filename,提交后文件又变成readonly, 如果你想放弃本地的修改,则cvs unedit filename, 它会undo,而且文件又变成readonly12)恢复到旧版本cvs update -j1.20 -j1.15 filenames1.20时当前版本号,注意顺序不要反了,记住要commit,为了保证是前版本号,最好先lock注意:cvs update -r1.15 filename,这里的-r不是版本号的意思,是给文件加了一个叫1.15的sticky tag如果不小心已经加成STICK TAG的话:用cvs update -A 解决13)文件比较cvs diff -c filenamecvs diff -c -r1.8 -r 1.5 filename14)锁定与解锁文件为保证串行的修改文件cvs admin -l filescvs admin -u files15)CVS宏/keywordCVS缺省会对文件进行keyword(宏)替换,在文件中加入这些关键字是个良好的工作习惯。
●$Id$ 关键字是用文件名、版本、时间、作者及代码性质替换,如果使用-l选项取出,在Exp后面会加上登录用户的名称。
除了$Id$关键字,RCS还支持下面常用的关键字:●$Log$ : 你所提供的修改日志信息。
●$Author$ :存入该版本的作者。
●$Locker$ : 该版本的加锁者●$State$ : 该版本的状态Exp(试验版), Stabe(稳定版), Rel(发行版).缺省是Exp●$Date$ : 该版本存入的时间,使用UTC时间格式。