人人范文网 范文大全

linux的_CVS 的命令总结

发布时间:2020-03-02 12:50:30 来源:范文大全 收藏本文 下载本文 手机版

Linux 的cvs命令总结

1)# export CVSROOT = :pserver:username@hostname: / cvsrootpath Note:pserver是访问方式,如果服务器设置的是口令认证,则是 pserver。

username是

CVS服务器的用户名,可以根据你的设置修改;

the_server_name是CVS服务器的名称或者IP地址;

/home/cvsroot是你的CVS服务器的CVSROOT目录,根据你的CVS服务器设置做修改或者询问管理员.

2) # cvs login //会提示输入用户名和密码 这时候cvs会问你口令,请把你在CVS服务器上的口令敲进去: Pawd:xxxxx 3)# cvs import -m\"test log meage\" -ko test/aoxj/ testprojuect test

Cvs的add命令并不真正添加文件,只是将文件注册到项目中,要真正添加文件,还要使用commit命令。

$cvs add -m \"test add\" testadd.c $cvs commit Cvs的remove命令并不真正删除文件,只是将文件从项目中取消,要真正删除文件,还要使用commit命令。

$cvs rm testadd.c $cvs commit testadd.c 一.checkout 签出

cvs checkout [-ANPRcflnps] [-r rev| -D date] [-d dir] [-j rev1] [-j rev2] [-k kopt] modules... -A 重置所有粘性标记/日期/kopts -N 如果指定了-d选项,不要使用短模块路径 -P 删除空目录

-R 操作应用于子目录 -c 显示模块数据库的内容

-f 如果没有发现标记/日期,强制与一个head版本号匹配 -l 只有本目录,不包括子目录 -n 不运行模块程序

-p 把文件签出到标准输出设备 -s 类似-c,但是包括模块状态

-r rev 按版本号或标记(tag)迁出模块(暗含-P选项:具有粘性) -D date 签出时间为date时的文件版本(暗含-P选项:具有粘性) -d dir 签出到名称为dir的目录而不是以模块名为名称的目录 -k kopt 在签出时使用RCS的kopt -k选项

-j rev merge将当前版本与指定的rev版本合并

使用范例: (1)cvs co -d bobi aimc/bobi 将aimc/bobi签出到当前目录下的bobi目录 (2)cvs co -d uab40 -r R-4-0-0-0 aimc/uabweb 将aimc/uabweb的tag=R-4-0-0-0的版本签出到uab40目录,可以用cvs status -v 来察看tag 二.commit 将文件签入到仓库中

cvs commit [-nRlf] [-m msg | -F logfile] [-r rev] files... 此命令将当前目录下的源代码与CVS中最新版本比较,并进行更新。 -n 不运行模块程序 -R 操作应用于子模块

-l 只有本目录,不包括子目录 -f 强制提交文件,不应用于子目录 -F file 从file中读出日志信息 -m msg 日志信息

-r rev 提交到这个分支或主干版本

三.update 将本地文件更新为最新版本

cvs update [-APdflRp] [-k kopt] [-r rev |-D date] [-j rev] [-I ign] [-W spec] [ files...] 此命令只有在checkout命令使用过后才能使用。

在执行update命令时,CVS并不是简单的将新版本覆盖当前文件,而是试图将新版本所做的修改添加到当前文件中去。如果发生冲突,CVS会以字符串 “>>>>>”来表示冲突发生。这时候你可以修改文件,重新提交。

提示:如果你已经做过一次checkout了,那么不需要重新checkout,只需要进入cvstest项目的目录,更新一把就行了:

-A 重置所有粘性标记/日期/kopts -P 删除空目录

-d 像checkout命令一样创建目录

-f 如果没有发现标记/日期,强制与一个head版本号匹配 -l 只有本目录,不包括子目录 -R 操作应用于子目录

-p 把文件签出到标准输出设备

-k kopt 使用checkout命令上的RCSkopt -k选项 -r rev 使用指定版本号/标记进行更新(具有粘性) -D date 设置进行更新的日期(具有粘性) -j rev merge将当前版本与指定的rev版本合并 -I ign 忽略文件(使用!重置) -W spec 包装指定行 四.cvs中的branch和tag辨析

branch“分支”指不同需求或功能差异很大的同一系统的不同产品线,每一个新的产品线都可以演化成新的产品,branch一般在产生新的产品线的时候创建。

tag“标记”经过QA人员测试之后的,确认达到要求时才创建的类似历史记录的标记,tag是记录版本历史的里程碑,tag是不可修改的。

我们checkout时指定版本的branch,可以取出该分支的最新的代码,进行修改之后,可以commit回cvs中去。

我们checkout时指定版本的tag,可以取出创建该标记时刻的代码,从该tag中取出的代码是反映历史的、不可修改的。

一个系统可以包含多个tag和branch,tag只能属于某个branch,一个branch可以包含多个tag。

默认的branch是Main,分支Main最新代码的tag是默认的Head标签。新的branch可以创建新的自定义名称,新的tag可以创建新的自定义名称。

不知不觉工作已经超过一年多了。在这其中参加了公司很多项目的开发与实施,频繁的使用着CVS这一工具。这篇文章就是想记录一下自己对CVS的一点使用心得,希望可以给刚刚接触这个工具的后来者一点帮助。同时也是抛砖引玉,可以在与大家交流的过程中提高自我。

CVS (Concurrent Version Control System) 是一个能让很多程式开发者同时做软体开发的非常强大工具。对于它可能大部分软件工程师都应该有所接触,起码也是对这个名字如雷贯耳了。CVS的基本命令和使用,网上已经有了很多的教程,我就不再罗嗦。本文想介绍的,可以说是CVS的精华,同时又是对初学者来说很难理解和掌握的(包括当时我也花了很多精力去学习)的两个功能:tag和branch。

一、tag

1.1 revision number(修订号)

要理解tag,首先要介绍一下revision number(修订号)。在CVS中每个文件的版本都有一唯一的 revision number。修订号的形式一般是这样的:`1.1\',`1.2\',`1.3.2.2\' 甚至是 `1.3.2.2.4.5\'。一个修订号总有偶数个用句号分隔的十进制数。按照默认,文件第一个修订号是 1.1。每个新的修订号的最右边的数会比它的上一个修订号的最右边的数大 1。下图显示了一些修订号,较新的版本在右边。

+-----+ +-----+ +-----+ +-----+ +-----+ ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 ! +-----+ +-----+ +-----+ +-----+ +-----+ 其实,对于大多数 cvs 用户来说,不需要考虑修订号;他们只要知道 cvs 已经自动地加上了类似 1.1,1.2 之类的修订号就可以了。

1.2 tag (标签)

由于每个文件都有自己的修订号,每次提交该文件一次,它的修订号就会就会增加。这样就会产生一个问题:对于软件的某一个发行版,源文件的修订号可能都不一样。例如: ci.c 5.21 co.c 5.9 ident.c 5.3 rcs.c 5.12 rcsbase.h 5.11 rcsdiff.c 5.10 rcsedit.c 5.11 rcsfcmp.c 5.9 rcsgen.c 5.10 rcslex.c 5.11 rcsmap.c 5.2 rcsutil.c 5.10 因此,要checkout某一个特定的发行版的所有源码的时候,如果是要根据修订号来的话,是异常繁琐和难以跟踪的。这个时候,就要用到CVS提供的很炫的一个功能了:tag(标签)。

标签可以用来标记多个文件的一组修订号,你可以想象标签以文件名为横轴,以版本号为纵轴绘制了一个曲线图(或者也可以想象成在一个由文件名和版本号组成的矩阵里面绘制的曲线)。

在过去的某个时候带 * 的版本号已被标记上标签。你可以把标签想象成一条经过所有被标记的文件的曲线。当你抓住线就得到所有标签标记的版本了。也可以通过另一种方式来看待这一点:把被同一个标签标记的所有版本号经过的曲线拉直, 然后直直地看过去。

1.3 tag命令的用法

下面的例子说明了怎样给一个文件添加标签。命令必须在模块的工作目录中发出。也就是说,你应该在 backend.c 文件所在的目录中发出该命令。

$ cvs tag rel-0-4 backend.c T backend.c $ cvs status -v backend.c =================== File: backend.c Status: Up-to-date

Version: 1.4 Tue Dec 1 14:39:01 1992 RCS Version: 1.4 /u/cvsroot/yoyodyne/tc/backend.c,v Sticky Tag: (none) Sticky Date: (none) Sticky Options: (none)

Existing Tags: rel-0-4 (revision: 1.4)

很少对单个孤立文件添加标签。一种更常见的用法是在产品开发周期中的各个里程碑任务完成后对一个模块的所有文件添加标签,比如在发行版完成的时候。

$ cvs tag rel-1-0 . cvs tag: Tagging . T Makefile T backend.c T driver.c T frontend.c T parser.c

(当把一个目录作为 cvs 的一个参数的时候,该命令不仅对该目录下的所有文件执行操作,而且也会递归地对该目录下的所有子目录中的文件执行操作。)

如果要检出一个模块的某个版本,可以使用checkout -r命令。在 checkout 命令中使用 `-r\' 标志可以检出一个模块某个版本。下面的命令可以很容易地取出模块 `tc\' 1.0 发行版的所有源文件:

$ cvs checkout -r rel-1-0 tc

1.4 什么时候使用tag tag的功能就像是给你的工程的某个时刻建立了一个快照。添加了tag后,不论你最源文件做了任何修改,只要发现你的修改发生了错误,或者是如果有人宣称在某个版本里有个 bug,但你在当前工作的副本中是找不到那个 bug,都可以根据tag重新rollback回去,或checkout出那个快照。

tag给开发人员带了这样的便利,因此在任何重要的开发阶段,都应该打上tag。

一般性的,在下面的情况都应该考虑给你的工程简历一份快照(tag):

完成了某个重要的功能

在每一个milestone 在去掉某个存在功能之前

在测试开始之前

在你对源文件做重大修改之前

新建分支(branch,下文会详细谈到)的时候

很并分支之前

当然了,这些都是一般性的建议。其实我感觉是只要你觉得做的修改可能会有副作用的时候,就应该打上tag。

linux 命令总结

Linux命令总结

Ping命令总结

stata命令总结

stata命令总结

AutoCAD命令总结

命令

数据库操作命令总结

网络命令应用总结

cad命令+excel总结

linux的_CVS 的命令总结
《linux的_CVS 的命令总结.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档