CVS常用命令(1) -- 基本

14 篇文章 0 订阅
8 篇文章 0 订阅

一、安装仓库

以root执行

1.创建用户和组

useradd -d /home/cvs --user-group cvs

2.创建仓库目录

mkdir /home/cvsrepo

3.改变组和所有者

chgrp -R cvs cvsrepo

chown -R cvs cvsrepo

4.设定目录的SGID位(使该目录下的所创建的文件和目录所组标识和该目录的组标识一样)

chmod g+srwx /home/cvsrepo

5.初始化cvs仓库目录

cvs -d /home/cvsrepo init

二、CVS常用命令

一般格式:  cvs [cvs-options] command [command-options]

CVS参数:

-H command 帮助:  如:cvs -H checkout

-d repository_path 存储库路径(可以在CVSROOT中指定存储库路径):  如:cvs -d /home/cvsrepo checkout testcvs

-e editor 指定编辑器

-n 不改变任何文件,只是看看命令发生了什么(dryrun)

-z compress_level  网络传输时的压缩程度

 

1.导入项目

格式:cvs -d repository-path import -m "log" projname vendor_tag release_tag

注意:要在projname文件夹下执行

如:项目为testcvs

cd testcvs

cvs -d /home/cvsrepo import -m "first import" testcvs "vendor_tag" "release_tag"

 

2.创建沙箱

格式:cvs [cvs-options] checkout(co) [command-options] project

选项:

-P  删除空目录

-D date -r revision -r tag   根据日期、修订版、标签调出

-j revision1 -j revision2   合并revision1和revision2的差异到沙箱

-j revision   CVS会把共同原版(指比revision和沙箱中的修订版更早的最新修订版)和revision的差异合并到沙箱中

如:cvs -d /home/cvsrepo/ checkout testcvs

 

 

3.提交变更

格式:cvs [cvs-options] commit [command-options] [filenames]

选项:

-l   只在当前目录

-R  递归  (默认)

-m message 记录日志

-F file  从文件得到日志信息

-r revision  (为提交的文件指定修订版编号,编号必须大于现有仓库中的修订版编号)

如:cvs -d /home/cvsrepo commit -m "test1"

 

 

 

4.显示状态

格式:cvs [cvs-options] status [command-options] [filenames]

 

选项:

-l   只在当前目录

-R  递归  (默认)

-v  冗长模式

如:cvs status -v

 

5.更新

格式:cvs [cvs-options] update [command-options] [filenames]

选项:

-d   下载新的目录

-P   不下载空目录

-j revision1 -j revision2   合并revision1和revision2的差异到沙箱

-j revision   CVS会把共同原版(指比revision和沙箱中的修订版更早的最新修订版)和revision的差异合并到沙箱中

-A 重设粘滞标记、日期、关键字,并以干线中的最新修订版来替换沙箱中现有的文件,CVS会合并所做的更改

-C 以仓库副本来覆盖沙箱中文件

-l   只在当前目录

-R  递归  (默认)

-D date -r revision -r tag   根据日期、修订版、标签调出文件,并和沙箱中文件的变更合并

-W "wrapper string"   以文件的扩展名来决定更新哪些文件

如:

cvs -d /home/cvsrepo update -d   将仓库的变动更新到沙箱(如不加-d,不会下载新的目录)

cvs -d /home/cvsrepo update -r 1.2(或-D date)   将静态无法变更的文件下载到沙箱,这样的文件即使更改了也无法提交回仓库

应当:

1)备份更改的文件

2)cvs update -A

3)将文件copy回去

4)提交cvs commit

cvs -d /home/cvsrepo update -j sandbox_revision -j repo_revision  还原成先前的修订版

cvs -d /home/cvsrepo -r revision -p > filename   将特定版本的文件写入文件

 

冲突文件中的情况

冲突:

<<<<<<< 文件名

来自沙箱的内容

=======

来自仓库的内容

>>>>>>> 修订版

 

修订版文件以.#file.revision的隐藏文件存储在当前目录下

 

6.新增文件

格式:cvs [cvs-options] add [command-options] [filenames]

选项:

-kb   增加二进制文件

-m    新增文件的描述

如:cvs -d /home/cvsrepo add -kb -m "log" *  增加一个二进制文件,其描述为log(会在cvs log中显示)

 

7.移除文件(文件没有被移除,只是被移到了Attic目录)

格式:cvs [cvs-options] remove [command-options] [filenames]

选项:

-l   只在当前目录

-R  递归  (默认)

-f   从沙箱移除文件

如:cvs -d /home/cvsrepo remove test1 test2

 

恢复被移除的文件

1)cvs update -j previous_revision -p filename > filename

2)将文件拷贝到相应目录

3)cvs add filename

4)cvs commit

 

移动文件

1)备份要移动的文件

2)cvs remove filename

3)进入到要移动到的目录

4)cvs add filename

5)cvs commit

 

8.释放沙箱

格式:cvs [cvs-options] release [-d] dir

选项:-d   释放并删除沙箱

如:cvs -d /home/cvsrepo release -d testcvs

 

9.关键字

形式:$keyword$

在你调出或更新文件时,关键字会被扩展

常用的关键字:

$Author$   最新提交的用户

$Date$      最新版提交的日期

$Header$  包括文件的RCS路径、版本、日期、作者等信息

$Name$     文件调出时所使用的标记名称(分支、标签)

$Log$        详细的日志信息

$Revision   修订版编号

 

-kb   二进制文件

-kk   只产生关键字的名称(而不是名称和内容)

-kv   只产生关键字的内容(而不是名称和内容)

-A    重设所有粘滞标记,并取出最新的修订版

 

如:一个名为kw.test的文件中有如下行:

revision: $Revision$
name: $Name$
author: $Author$
date: $Date$
header: $Header$

 

(1)黙认模式(名称和内容)

如果将其cvs add kw.test,     cvs commit,则再打开时为:

revision: $Revision: 1.3 $
name: $Name:  $
author: $Author: haha $
date: $Date: 2009/10/25 06:39:03 $
header: $Header: /home/cvsrepo/testcvs/keyword,v 1.3 2009/10/25 06:39:03 haha Exp $
log: $Log: keyword,v $
log: Revision 1.3  2009/10/25 06:39:03  haha
log: test
log:
log: Revision 1.2  2009/10/25 06:38:36  haha
log: test
log:

(2)-kk模式(只产生关键字的名称)

cvs add -kk kw.test   cvs commit,则再打开时为:

revision: $Revision$
name: $Name$
author: $Author$
date: $Date$
header: $Header$
log: $Log$
log: Revision 1.1  2009/10/25 06:46:15  haha
log: test
log:
log: Revision 1.3  2009/10/25 06:39:03  haha
log: test
log:
log: Revision 1.2  2009/10/25 06:38:36  haha
log: test
log:

(3)-kv模式(只产生关键字的内容)

cvs add -kv kw.test   cvs commit,则再打开时为:

revision: 1.1
name:
author: haha
date: 2009/10/25 06:49:59
header: /home/cvsrepo/testcvs/keyword2,v 1.1 2009/10/25 06:49:59 haha Exp
log: keyword2,v
log: Revision 1.1  2009/10/25 06:49:59  haha
log: test
log:
log: Revision 1.3  2009/10/25 06:39:03  haha
log: test
log:
log: Revision 1.2  2009/10/25 06:38:36  haha
log: test
log:

 

(4)改变文件的关键字模式

cvs admin -kb files

 

10.封装字符串(可以对某一类文件进行操作,当某个文件符合封装字符串时,会改用封装字符串中所指定的合并方法和关键字扩展模式,而不再使用命令中所指定的方法)   [可以用在命令update、import中]

格式:

-W "wildcard option 'value' [option 'value' ...]"

选项:

-m   文件的合并做法(COPY或MERGE)

-k    b,v,k(关键字扩展模式)

如:cvs update -W"kw.test -k 'v'"        (还未用成功??不知什么原因??)


11.指定黙认的CVS命令选项

~/.cvsrc文件(你的HOME目录中)

格式为:每个命令一行

命令   选项

如:

update -P

checkout -P

cvs -d /home/cvsrepo  (前面每个命令都指定了存储库路径,利用这个文件可以免去这样的麻烦)
12.比较文件的修订版
格式: cvs [cvs-options] diff [command-options] [filenames]
选项:
-r revision or tag  指定修订版
-D date  指定日期最近的修订版
-c 显示每处变更前后几行内容
-y --side-by-side  并排比较两文件
如:
cvs -d /home/cvsrepo diff -r 1.8 -c func   1.8版本和沙箱的差异
cvs -d /home/cvsrepo diff -r 1.8 -r 1.9 -c func   1.8和1.9版本的差异

13.产生修补文件
格式: cvs [cvs-options] rdiff [command-options] [filenames]
选项:
-r revision or tag  指定修订版
-D date  指定日期最近的修订版
-c 显示每处变更前后几行内容
-y --side-by-side  并排比较两文件
如:
cvs -d /home/cvsrepo -r 1.1 -r HEAD testcvs/func > patch.file  创建修补文件

14.显示每行的变更
cvs annotate [filenames]
15.显示历史记录(log | rlog)
格式: cvs [cvs-options] log|rlog [command-options] [filenames]
log需要沙箱,rlog不需要沙箱,但需要指明模块名
选项:
-r revision1:revision2[,revision1:revision2...]   只显示相应修订版的日志
-R 只显示RCS文件名称
-d date[,date...]  只显示某一日期的修订版日志
-h 只输出标头信息
-l 本目录
-t 只显示标头信息和说明文字(description),不显示日志和修订版信息
16.帮助
cvs help
cvs -H command
17.显示版本
cvs version
18.导出文件
格式: cvs [cvs-options] export [command-options] [filenames]
选项:
-l  本目录
-R  递归
-r revision or tag  特定标记
-D date  特定日期
-d dir   导入到的目录名(默认为模块名)
如:
cvs export -R -r HEAD -d dir_name module_name
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值