CVS命令说明 (2)

惨绿少年 分享 2020-06-22 下载文档

除了$Id$关键字,RCS还支持下面常用的关键字:

? $Log$ : 你所提供的修改日志信息。 ? $Author$ :存入该版本的作者。 ? $Locker$ : 该版本的加锁者

? $State$ : 该版本的状态 Exp(试验版), Stabe(稳定版), Rel(发行版).

缺省是Exp

? $Date$ : 该版本存入的时间,使用UTC时间格式。 ? $Revision$ : 该版本的版本号 ? $RCSfile$ : RCS文件名 ? $Source$ : RCS全路径名 ? $Name$ : 取回该版本的符号名

? $Header$ : 相当于$ Source $$ Revision$$Date$$Author

$$State$$Locker$的组合

16) Sticky Tag

tag的作用是对多个连续变化的文件做一个快照来表示某一时刻的所有不同内部版本的文件,一般是项目到一定阶段,可以给所有文件统一指定一个阶段里程碑版本号,需要的时候可以一次导出这些版本不一的文件.标记的另外一个非常重要的作用是生成分支和合并分支。

a. 添加Tag

cvs tag release_name (在模块本地拷贝目录下)

release_name要简洁而含义丰富,由字母开头,加字母,数字,下划线和连字号组成,特别是不能含“.” b. 取出tag_name标志的文件

cvs checkout -r release_name module_name

c. 重置Tag

cvs update -A (在模块本地拷贝目录下)

tag标识的文件是历史文件,不能修改,这样可在本地去除这个限制,让它和当前版本合并 d. 删除Tag

cvs rtag –d tag_name cvs rtag –F tag_name

cvs tag –d tag_name (在模块本地拷贝目录下) cvs tag –F tag_name (在模块本地拷贝目录下)

17) CVS分支管理

CVS可以将历史划分成多个独立,并行和互不影响的分支,并去修改历史

a. 标定里程碑

cvs tag release_1_0 prj_dir_name

b. 开始一个新的里程碑

cvs commit -r 2

标记所有文件开始进入2.x的开发

****** 这一动作,CVSNT中无法执行。没有此部不影响分支和合并。

注意:CVS里的revsion和软件包的发布版本可以没有直接的关系。但所有文件使用和发布版本一致的版本号比较有助于维护。

c. 建立分支

在开发项目的2.x版本的时候发现1.x有问题,但2.x又不敢用,则从先前标记的里程碑:release_1_0导出一个分支release_1_0_bugfixes:

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位

d. 分支并行开发

一些人先在另外一个目录下导出release_1_0_bugfixes这个分支:解决1.0中的紧急问题。

cvs checkout -r release_1_0_bugfixes 分支是可以修改的.

解决BUG的开发人员修改该分支的代码,并将修改提交到分支上去。而其他人员仍旧在项目的主干分支2.x上开发。

e. tag分支

在release_1_0_bugfixes上修正错误后,标记一个1.0的错误修正版本号。 cvs tag release_1_0_bugfixes_p1 (在分支目录下执行)

f. 合并分支

如果2.0认为这些错误修改在2.0里也需要,也可以在2.0的开发目录下合并release_1_0_bugfixes_p1中的修改到当前代码中:

cvs update -j release_1_0_bugfixes_p1 (在主干目录下执行) 这只是合并到本地拷贝中,然后执行

cvs commit –m “merge release_1_0_bugfixes_p1” (在主干目录下执行)

g. 再次合并分支

如果又发现1.x新的bug,我在分支已经修改了,并标定了release_1_0_bugfixes_p2,我们同样希望把它合并到主干上来。

cvs update -j release_1_0_bugfixes_p1 -j release_1_0_bugfixes(在主干目录下执行)

它的意思是把release_1_0_bugfixes(分支) 上从release_1_0_bugfixes_p1(tag)开始变化了的部分合并到当前文件(主干) 。

也可用f步的方法,则以前合并的内容会重新合并 注意:此时我们使用第e步的结果

教训:尽早频繁的tag,但同时不能导致tag泛滥,tag在不同的分支里可以同名

h. 锁定分支

cvs admin -l r_0_2 锁定r_0_2分支 cvs admin -l 锁定主分支

i.

设置缺省分支

cvs admin -b r_0_2 设定r_0_2为缺省分支 cvs admin -b 设定主分支

j. 删除历史记录

如果历史文件过多,或确定有几个阶段的稳定版本,我们可以删除一些历史文件,以保证cvs的性能

cvs admin -o rev1:rev2 filename

删除rev1到rev2的版本,含这两个版本

cvs admin -o rev1::rev2 filename 删除rev1到rev2的版本,不含这两个版本

如果省略rev1,表示删除本分支rev2之前的所有版本 如果省略rev2,表示删除本分支rev1之后的所有版本

cvs admin -o rev filename 删除rev这个版本的文件

注意:有tag的版本不能被删除,所以tag很重要,而且只能删单个文件

k. 查看本地拷贝所在的分支

cvs status –v files

其中会显示文件所在的分支信息。

7. 项目发布导出不带CVS目录的源文件

做开发的时候你可能注意到了,每个开发目录下,CVS都创建了一个CVS/目录。里面有文件用于记录当前目录和CVS库之间的对应信息。但项目发布的时候你一般不希望把文件目录还带着含有CVS信息的CVS目录吧,这个一次性的导出过程使用cvs export命令,不过export只能针对一个TAG或者日期导出,比如:

cvs export -r release1 project_name cvs export -D 20021023 project_name cvs export -D now project_name

8. CVS命令速查

命令 add 作用 Add a new file/directory to the repository Usage: cvs add [-k rcs-kflag] [-m message] files... -k Use \ -m Use \Administration front end for rcs Usage: cvs admin [options] files... -l[rev] Lock revision (latest revision on branch, latest revision on trunk if omitted). (DEPRECIATED) -m rev:msg Replace revision's log message. -o range Physically delete (outdate) specified range of revisions: rev1:rev2 Between rev1 and rev2, including rev1 and rev2. rev1::rev2 Between rev1 and rev2, excluding rev1 and rev2. rev: rev and following revisions on the same branch. rev:: After rev on the same branch. :rev rev and previous revisions on the same branch. ::rev Before rev on the same branch. rev Just rev. admin -q Run quietly. -t[file] Get descriptive text from file (stdin if omitted). -t-string Set descriptive text. -u[rev] Unlock the revision (latest revision on branch, latest revision on trunk if omitted). annotate Show last revision where each line was modified Usage: cvs annotate [-lRf] [-r rev] [-D date] [files...] -l Local directory only, no recursion. -R Process directories recursively. -f Use head revision if tag/date not found. -r rev Annotate file as of specified revision/tag. -D date Annotate file as of specified date. Change the Access Control List for a directory Usage: cvs chacl [-R] [-r branch] [-u user] [-j branch] [-n] [-p priority] [-m m essage] [-a [no]{read|write|create|tag|control}[,...]] [-d] [file or directory.. .] -a access Set access -d Delete ACL -j branch Apply when merging from branch -m message Custom error message -n Do not inherit ACL -p priority Override ACL priority -r branch Apply to single branch -R Recursively change subdirectories -u user Apply to single user Checkout sources for editing Usage: cvs checkout [-ANPRcflnps] [-r rev] [-D date] [-d dir] [-j rev1] [-j rev2] [-k kopt] modules... -A Reset any sticky tags/date/kopts. -N Don't shorten module paths if -d specified. -P Prune empty directories. -R Process directories recursively. -c \ -f Force a head revision match if tag/date not found. -l Local directory only, not recursive -n Do not run module program (if any). -p Check out files to standard output (avoids stickiness). -s Like -c, but include module status. -r rev Check out revision or tag. (implies -P) (is sticky) -D date Check out revisions as of date. (implies -P) (is sticky) -d dir Check out into dir instead of module name. -k kopt Use RCS kopt -k option on checkout. (is sticky) -j rev Merge in changes made between current revision and rev. -b Perform -j merge from branch point. chacl checkout


CVS命令说明 (2).doc 将本文的Word文档下载到电脑

下一篇:盛泽思进小学9月份工作备忘录

相关推荐
相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xxxxxx QQ:xxxxxx