Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103121406
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: C/C++

2008-04-16 17:25:53

作者:李红建  

摘 要: 本文讲述SCCS在软件开发中的使用方法和与其相关的一些内容。
关键词:软件  SCCS  版本
  
  软件开发就象我们撰写文章一样是一项繁杂的工作,是一个不断对程序进行修改、完善的过程,需要排除程序中的错误,提高程序的运行效率,增加新的功能,这就形成了软件的修改轨迹,形成了软件的不同版本。在开发过程中,我们往往要和以前的版本进行比较,甚至回到以前的版本重新开始,所以保留开发过程中的每一个版本对于我们来说都是非常必要的。
  如果我们为每一个版本保留一个源程序,不仅浪费系统的空间资源,而且非常不便于管理,极易造成混乱。解决这个问题的一个有效方法是采用UNIX提供的管理工具SCCS,它不但可以使源程序的修改文档化,有利于程序员记录每次对源程序的修改情况,而且还提供了权限管理的功能,还可以让程序员随时得到源程序的每一个版本。
  
一、基本概念
  
  SCCS系统保存程序的多个版本是这样实现的:保留最基础的源程序(我们称之为1?1版),以后只保留对其的修改,从而形成不同的版本,这一点类似于数据库的完备备份和日志备份,见下图1、图2。

  为了更好地利用SCCS系统,下面介绍一些有关的基本术语:
  SID:每个修改清单称为一个“delta”,每个“delta”有一个称作“SID”的标示串,其最短2个数字,最长4个数字,格式如下:
  Release.Level.Branch.Sequence
  Release:发行号;
  Level:等级号;
  Branch:分支号;Sequence:顺序号。
  SCCS的工作文件:
  s-文件:给定文件所有版本的永久文件;
  p-文件:一个特殊文件,包括当前编辑文件的版本信息;
  x-文件:s-文件的临时副本;
  g-文件:普通的正文文件;
  z-文件:一个上锁文件,防止两个程序员同时修改同一个正文文件。
  其中对我们涉及最多的两个文件是s-文件和p-文件。
  
二、应用举例
  
  假设有下面一个源程序demo.c,其内容如下:
  #include
  /* %E% */
  int main(argc,argv)
  int argc;
  char **argv;
  {
  printf(“This is a SCCS test program.\n”);
  }
  其中/* %E %*/是SCCS的关键字,只读复原时它将展开为系统的日期,有关SCCS的关键字将在后面介绍。

  下面简要介绍SCCS系统的使用步骤:

  1?建立s-文件
  admin -idemo.c s.demo.c
  如果原文件中不含关键字,admin命令将给出下列警告信息No id keyword(cm7)
  s.demo.c文件建立后,demo.c仍然存在,为了便于以后的管理,该程序应该删除。

  2?加入注释信息
  cdc -r 1.1 s.demo.c
  comment?
  这时可以为该版本加入注释信息。

  3?为读而复原文件
  get s.demo.c
  该命令执行后,将生成最新版本的demo.c(本例中为1?1),也可以用-r version得到SCCS中的任一版本。

  4?编辑和修改SCCS文件
  get -e s.demo.c
  将生成demo.c和p.demo.c,其中p.demo.c中含有来源版本和建议新的版本信息,同时含有用户和日期等信息。

  对demo.c做插入修改:
  #include
  /* %E% */
  intmain(argc,argv)
  int argc;
  char **argv;
  {
  printf(“This is a SCCS test program.\n”);
  /* This comment is inserted*/
  }

  执行下列命令:
  delta s.demo.c
  comment?insert a comment line
  1 lines inserted
  这样就形成了程序的1?2版。delta命令执行后,demo.c被自动删除。为了让下一个程序的版本为2?1执行下列命令:
  get -e -r2.1 s.demo.c

  5?显示版本信息
  prs s.demo.c
  该命令显示所有的版本和加入的注释信息。

  6?简化版本结构
  comb -c1.2 1.5 2.1 s.demo.c>demo.sh
  保留版本1?2 1?5 2?1
  该命令直接合并文件,而且生成了一个脚本,执行该脚本才真正合并文件。
  chmod a+x demo.sh
  demo.sh
  另外的简化版本的命令是:
  rmdel -r 1.3删除版本1?3
  
三、相关内容
  
  1?在源程序中使用SCCS的关键字更有利于我们使用SCCS系统。SCCS常用关键字有:
  %D% 当前日期;
  %R% 版本号;
  %L% 等级号;
  %B% 分支号;
  %S% 顺序号。
  这些关键字在用get命令只读展开时被相应的信息代替。
  2?makefile
  make支持SCCS系统的s.前缀的转换规则,当demo.c不存在时,make会自动从s.demo.c得到demo.c。当然你也可以改变.s的缺省规则。
  all:demo
  demo:demo.c
  cc -g $@.c -o $@
  执行make时,如果只有s.demo.c,下面的命令首先被执行:
  get s.demo.c
  
四、结束语
  
  SCCS系统在一个程序有多个版本时才会充分显出其优势,单个版本使用SCCS的s-文件要比原文件略大。应当注意的是SCCS系统不仅可以用来记录对源程序修改轨迹,而且还可以用来其它任何文本文件同样目的的应用,如果把它和ar命令结合起来使用,就更能发挥SCCS的优势,使它成为得心应手的工具。
阅读(255) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~