单个文件的版本控制/管理,适合对少量文件进行版本控制,不适合小组进行项目协作开发。优点:使用简便;缺点:功能有限。RCS常用命令有ci/co/rcsdiff。

  rcs用一个后缀为“,v”的文件保存一文件的内容和所有修改的历史信息,你可以随时取出任意一个版本,用rcs保存程序就不必为不同版本分别备份。下面是一个“,v”文件的例子:

 (太长,忽略。请看演示或自己找一个样本)

  rcs文件里记载了每次更新的日期、作者、还有更新说明(Log)。文件的最新版本内容放在Log之后,再后面是历次版本与其后一版本的差别,按check in的时间做倒序排列。这么做的原因是因为新版本的check out机会大些,倒序排列可优化check out时间。

   ci _ check in,保存新版本

  此命令把指定文件添加到rcs历史文件中,同时把该文件删除。如果当前目录下有个RCS目录,ci会把历史文件存在此处,否则放在当前目录下。

   [hahalee@builder]$ mkdir RCS

   [hahalee@builder]$ ci wood.txt

   RCS/wood.txt,v <-- wood.txt

   enter description, terminated with single '.' or end of file:

   NOTE: This is NOT the log message!

   >> initial checkin #NOTE: 这里是给本次checkin做的说明

   >> .

   initial revision: 1.1

   done

   [hahalee@builder]$ ls -l RCS/

   总共 4

   -r--r--r-- 1 hahalee hahalee 451 Apr 7 07:27 wood.txt,v

  ci也有丰富的命令行选项,比如,可以指定check in的版本号,甚至可以用字符串来做版本号,请查阅ci的manpage。

   co _ check out,取出当前(或任意)版本

常用命令行选项:

  -r[rev] 指定版本的checkout -l[rev] 指定版本,加锁的checkout

  如不加可选的版本号,缺省是最近的版本。如果只需要一份只读的拷贝,用-r(特殊情况,如需要一份只读的当前拷贝,可以不要任何选项)。如需要对checkout的文件进行修改,请用-l选项。常见的操作流程是:

   ci xxx.c; co _l xxx.c; 编辑,测试; ci xxx.c …………

  在每次checkin的时候,版本号会自动在最低位上加1。为了在文件中反映版本控制信息,rcs提供了几个特殊的关键字,这里介绍$Id$和$Log$,其它的请参考info cvs。

  $Id$代表文件的版本标识,由文件名/版本号/最后一次checkin时间/最后一次checkin的用户这几项组成,比如:

$Id: wood.txt,v 1.3 2000/04/07 00:06:52 hahalee Exp $

如果需要更详细的信息,可以用$Log$,$Log$被扩展为该文件的所有修改日期和备注,例:

    /* $Log: wood.txt,v $

    * Revision 1.2 2000/04/07 00:29:12 hahalee

    * This is my second checkin

    *

    * Revision 1.1 2000/04/07 00:28:39 hahalee

    * Initial revision

    * /

  顺便介绍一下ident命令。它的功能比较简单,就是从文件中搜索出RCS标示符并打印出来。可以用ident /usr/sbin/sendmail 来看看。不用说,如果想在最终的binary文件里找到$Id$串,得要把它声明到一个字符串里去。很多程序里这么写:

    #ifndef lint //这里是为了避免lint报告“变量未使用”

    static const char rcsid[] =

   "$Id: bin/sh.c,v 1.15 1999/08/27 23:13:43 wp Exp $"; //这是从 $Id$ 扩展                                                                                                                                                  //出来的

    #endif

   rcsdiff _ 比较revision之间的差异.运行diff命令,生成patch文件

命令行格式:rcsdiff [选项] [-r版本[-r版本]] [diff选项] 文件名

  说明:如果没给出版本号,把上次checkin的内容同当前工作文件比较;如给出了一个版本号,就把那个版本的内容同当前工作文件比较;若给出了两个版本号,则用第一个来跟第二个比较。由于rcsdiff调用diff命令,所有的diff选项都可用。它的输出也是加了额外信息的diff格式内容,可以给patch使用。

  rcs里面还有rcs,rcsclean,rlog,merge,rcsmerge我们没有提到,有的特别简单有的特别繁琐且用得少。其中rcs命令可以用来对rcs文件进行各种精细的维护,最为复杂。