您的位置:软件测试 > 开源软件测试 > 开源配置管理工具 > cvs
教你用Linux作CVS服务器
作者:网络转载 发布时间:[ 2013/1/28 13:41:26 ] 推荐标签:

3.在管理中的相关技术

3.1 在管理源文件的一种技术叫"关键字替换".在每次执行"cvs commit"操作后源文件的某些关键字会被替换为可用的词

$AUTHOR$ 用户名

$Data$ 登记时的时间

$Header$ 标准的首部,包含RCS的完整路径名,日期,作者

$Id$ 除RCS文件名不完整外与$Header$同.

$Log$ 包含RCS的完整路径名,版本号,日期,作者和在提交时提供的日志信息.

$RCSfile$ 包含RCS的文件名,不包括路径名

$Revision$ 分配的版本号

$Source$ RCS文件的完整名

$State$ 分配的版本的状态,由 cvs admin -s 分配.

例: 在cvs commit之前,main.c里有

static char *rcsid="$Id$";

执行cvs commit后

main.c的改行变为:

static char *rcsid="$Id: main.c,v 1.2 1999/04/29 15:10:14 trimblef Exp$";

当然,这里只是一个演示.在实际的程序开发中,这种技术有非常有用的作用,在此不多赘述.有兴趣的朋友可参考相关书籍.

3.2 创建分支可以使用户对一些文件使用命令commit进行修改时不会影响主干. 创建分支应首先为拟作修改的那些文件创建一个标签(tag).

标签是赋于一个文件或一组文件的符号.在源代码的生命周期里,组成一组模块的文件被赋于相同的标签.在工作目录中执行

~usr/teat/$cvs tag release-1-0

标签创建后, 可以为其创建一个分支:

~usr/teat/$cvs rtag -b -r release-1-0 release-1-0-path print

-b :创建分支

-r release-1-0 :指定存在的标签

releas-1-0-patch:分支

print: 模块名

使用cvs update -j 选项可以将分支上的改变与本地文件拷贝合并.

~usr/teat/$cvs update -j release-1-0 print.c

对源文件作必要修改后, 可以用cvs release 删除本地工作拷贝

并通知其他开发者这个模块不再使用.

~use/$cvs release -d test

3.3 冲突解决

在有多个用户对同一个文件进行修改时,如果修改了其中的相同部分,而修改后的内容如果有不同的话,出现冲突是不可避免的。

例如在CVS 文件仓库中有一个文件 test.c ,它的版本是 1.4, 用户A 先检出该文件进行修改,而稍后有用户B 检出该文件进行修改,并提前提交成 1.5,这样在用户A再提交时会出现冲突,这时CVS会提示需要手工解决。

例如,文件仓库中的版本1.4:内容为:

#include

main()

{

int i;

for(i = 0; i < 100; i++)

printf(“Count: %d
”, i);

}

用户B 1.5:

#include

main()

{

int i;

for(i = 0; i < 10; i++)

printf(“Count: %d
”, i);

printf(“Over
”);

}

用户A :

#include

main()

{

int i;

for(i = 0; i < 50; i++)

printf(“Count: %d
”, i);

return;

}

上一页12345678下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd