



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CVS使用指南1 概念CVS是Client/Server结构的并行版本控制系统。资源库(repository)存在于服务器上,所有版本的数据仓库。可以把它想象成一个数据库服务器。模块 (module)在资源库上,被当成一个整体来维护的版本对象,一个模块由若干文件、目录组成。例如,可以把一个项目当成一个模块。模块可以被当成一个整体被导入(import)、检出(checkout)。分支(branch)一个模块的变化可以形成多个并行的分支。分支可以成为一棵树。分支可以看成整个模块的版本。主分支被称作HEAD。标记(tag)在某一时刻,模块中所有的文件处于各自的不同版本,为了保存当前模块的状态,可以对模块做一个标记。将来可以按照这个标记检出文件。相当于一个快照。分支的形成是基于标记的。一个标记可以是分支标记。标记是应用于文件的,当按照标记检出的时候,只有带某个标记的才被检出。可以对模块做标记,也可对一些文件做标记。修订版(revision)对文件修改的版本号。用系统自动用之类的来标识。2 使用2.1 登录、注销cvs login这时候cvs会问密码,输入密码。如果没有任何错误信息,登录成功。成功登录后将建/.cvspass文件,保存你的口令,以后就不用输入口令了cvs logout2.2 检出(checkout)cvs checkout module_name把一个模块从服务器上检出,到本地计算机上。一个模块只需要在开始使用的时候检出一次,以后使用更新。2.3 更新文件cvs update filename将文件同步到最新的版本:不指定文件名,cvs将同步所有子目录下的文件。最好每天开始工作前或将自己的工作导入到库里前都要做一次,并养成先同步 后修改的习惯,和Virvual SourceSafe不同,CVS里没有文件锁定的概念,所有的冲突是在commit之前解决,如果你修改过程中,有其他人修改并commit到了库中, CVS会通知你文件冲突。2.4 提交文件cvs commit -m write some comments here file_name确认修改写入到CVS库里。如果不用写-m comments而直接确认cvs commit file_name 的话,cvs会自动调用系统缺省的文字编辑器(一般是vi)要求你写入注释。 注释的质量很重要:所以不仅必须要写,而且必须写一些比较有意义的内容:以方便其他开发人员能够很好的理解。每次只确认一个文件到CVS库里是一个很好的习惯,但难免有时候忘了指定文件名,把多个文件以同样注释commit到CVS库里了,以下命令可以允许你修改某个文件某个版本的注释: cvs admin -m 1.3:write some comments here file_name2.5 查看状态 cvsstatus filename 状态报告,类似这样: File:foo.cStatus:Up-to-date Workingrevision:SomeDate Repositoryrevision:1.2/home/cvsroot/cvstest/foo.c,v StickyTag:(none) StickyDate:(none) StickyOptions:(none) 这里最重要的就是Status栏,这里总共可能有四种状态: Up-to-date: 本地的文件与库一致。LocallyModified: 本地文件比库中文件新。NeedingPatch:本地文件比库中文件旧。NeedsMerge: 本地文件和库中文件都被修改了。2.6 查看修改历史和注释信息 cvs log file_name 2.7 添加文件和目录 cvs add new_file_name cvs add -kb new_file_name cvs add dir_name CVS一般只处理文本文件,它会扩展keyword(宏)并转换行结束符。对于图片,Word文档等非纯文本的项目,需要使用cvs add -kb选项,否则有可能出现文件被破坏的情况。然后确认修改并注释 cvs ci -m write some comments herenew_file_name 2.8 删除文件 将某个源文件物理删除后。cvs remove file_name 然后确认修改并注释 cvs ci -m write some comments here file_name 注意:很多cvs命令都有缩写形式:commit=ci; update=up; checkout=co; remove=rm; 2.9 修改文件名 移动文件/文件重命名 cvs里没有cvs move或cvs rename,因为这两个操作是先cvs remove old_file_name,然后cvs add new_file_name实现的。 2.10 目录结构同步 如果在你checkout后,有人添加了新的文件或目录,你需要把他们取出来。cvs update -d 2.11 放弃本地的修改(undo) 如果修改来了本地文件,不想提交,想重新取新文件。cvs update -C filename 它会先把你的本地文件改名。建议:建议大家把checkout的文件缺省为readonly,把cvs -r添加到/.cvsrc文件中 这样,你每次修改一个文件前,先cvs edit filename,提交后文件又变成readonly,如果你想放弃本地的修改,则cvs unedit filename,它会undo,而且文件又变成readonly。2.12 恢复到旧版本 cvs update -j1.20 -j1.15 filenames 1.20时当前版本号,注意顺序不要反了,记住要commit,为了保证是当前版本号,最好先lock。注意:cvs update -r1.15 ,这里的-r不是版本号的意思,是给文件加了一个叫1.15的sticky tag 如果不小心已经加成STICK TAG的话:用cvs update -A 解决 2.13 文件比较 cvs diff -c filename cvs diff -c -r1.8 -r1.5 filename 2.14 锁定与解锁文件 为保证串行的修改文件。加锁:cvs admin -l files 解锁:cvs admin -u files 3 CVS宏 CVS缺省会对文件进行keyword(宏)替换,在文件中加入这些关键字是个良好的工作习惯 。$Id$ 关键字是用文件名、版本、时间、作者 及代码性质替换,如果使用-l选项取出,在Exp后面会加上登录用户的名称。$Log$ : 你所提供的修改日志信息。 $Author$ :存入该版本的作者。 $Locker$ : 该版本的加锁者 $State$ : 该版本的状态 Exp(试验版), Stabe(稳定版), Rel(发行版).缺省是Exp $Date$ : 该版本存入的时间,使用UTC时间格式。 $Revision$ : 该版本的版本号 $RCSfile$ : RCS文件名 $Source$ : RCS全路径名 $Name$ : 取回该版本的符号名 $Header$ : 相当于$ Source $ Revision$Date$Author $State$Locker$的组合 4 标签(tag)操作4.1 对当前模块设置标签cvs tag release_namemodule_name release_name要简洁而含义丰富,由字母开头,加字母,数字,下划线和连字号组成,特别是不能含“.”。4.2 检出有某个标签文件cvs checkout -r release_name module_name 4.3 合并cvs update -A tag标识的文件是历史文件,不能修改,这样可在本地去除这个限制,让它和当前版本合并。5 CVS分支管理 5.1 标定里程碑 cvs tag release_1_0 prj_dir_name 5.2 开始一个新的里程碑: cvs commit -r 2 标记所有文件开始进入2.x的开发 注意:CVS里的revsion和软件包的发布版本可以没有直接的关系。但所有文件使用和发布版本一致的版本号比较有助于维护。 5.3 建立分支 在开发项目的2.x版本的时候发现1.x有问题,但2.x又不敢用,则从先前标记的里程碑:release_1_0导出一个分支release_1_0_b2 cvs rtag -b -r release_1_0 release_1_0_bugfixes prj_dir_name -r修饰的是release_1_0,-b 修饰的是release_1_0_bugfixes,cvs的版本号将变为4位,以后每分一次支,版本号增加2位 5.4 分支并行开发 一些人先在另外一个目录下导出release_1_0_bugfixes这个分支:解决1.0中的紧急问题, cvs checkout -r release_1_0_bugfixes 分支是可以修改的,并自动提交到分支上去 而其他人员仍旧在项目的主干分支2.x上开发 5.5 tag分支 在release_1_0_bugfixes上修正错误后,标记一个1.0的错误修正版本号 cvs tag release_1_0_bugfixes_p1 5.6 合并分支 如果2.0认为这些错误修改在2.0里也需要,也可以在2.0的开发目录下合并release_1_0_patch_1中的修改到当前代码中: cvs update -j release_1_0_bugfixes 5.7 再次合并分支 如果又发现1.x新的bug,我在分支已经修改了,并标定了release_1_0_patch_2,我们同样希望把它合并到主干上来 cvs update -j release_1_0_bugfixes_p1 -j release_1_0_bugfixes 它的意思是把release_1_0_bugfixes_p1(tag)到release_1_0_bugfixes(分支)变化了的部分合并到当前文件(主干) 否则用6步的方法,则以前合并的内容会重新合并 注意:此时我们使用第5步的结果 教训:尽早频繁的tag,但同时不能导致tag泛滥,tag在不同的分支里可以同名 5.8 锁定分支 cvs admin -l r_0_2 锁定r_0_2分支 cvs admin -l锁定主分支 5.9 设置缺省分支 cvs admin -b r_0_2 设定r_0_2为缺省分支 cvs admin -b设定主分支 5.10 删除历史记录 如果历史文件过多,或确定有几个阶段的稳定版本,我们可以删除一些历史文件,以保证cvs的性能。cv
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Unit 4 Natural disasters Project 教学设计-2024-2025学年高中英语人教版(2019)必修第一册
- 动车组维修师前沿技术考核试卷及答案
- 钨钼冶炼工协同作业考核试卷及答案
- 加油员从业安全培训讲解课件
- 2 学校里工作的人教学设计-2025-2026学年小学数学一年级下册人教版生活数学(特殊教育)
- 安徽省滁州二中高二体育 达标测验说课稿
- 有趣的半圆形(教学设计)人教版(2012)美术 一年级下册
- 人造肉产品标签与信息透明化研究-洞察及研究
- 电线电缆挤橡工基础知识考核试卷及答案
- 大专生理学基础消化课件
- 肿瘤护理学高级进阶2025年测试答案及解析
- 2025年宣城市总工会招聘社会化工会工作者13名笔试参考题库附答案解析
- 2025-2026学年苏科版(2024)初中物理九年级上册教学计划及进度表
- 咸味香精基础知识培训课件
- 2025年9月新版劳务用工合同范本(可规避风险)
- 《焊接结构生产》课件-第一单元 焊接结构生产基础知识
- 中国钾离子电池行业市场前景预测及投资价值评估分析报告
- 烟草局联合快递企业开展涉烟寄递违法行为培训
- 高一历史秋季开学第一课:走进高中历史的星辰大海
- 医药公司经营风险管理
- 2025年全国“质量月”质量知识竞赛题库及答案
评论
0/150
提交评论