LINUX作CVS服务器之三

2009-05-13 00:55:50来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折


3.在管理中的相关技术

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

$AUTHOR$用户名

$Data$登记时的时间

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

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

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

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

$Revision$分配的版本号

$Source$RCS文件的完整名

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

例:在cvscommit之前,main.c里有

staticchar*rcsid="$Id$";

执行cvscommit后

main.c的改行变为:

staticchar*rcsid="$Id:main.c,v1.21999/04/2915:10:14trimblefExp$";

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

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

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

~usr/teat/$cvstagrelease-1-0

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

~usr/teat/$cvsrtag-b-rrelease-1-0release-1-0-pathprint

-b:创建分支

-rrelease-1-0:指定存在的标签

releas-1-0-patch:分支

print:模块名

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

~usr/teat/$cvsupdate-jrelease-1-0print.c

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

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

~use/$cvsrelease-dtest

3.3冲突解决

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

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

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

#include

main()

{

inti;

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

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

}

用户B1.5:

#include

main()

{

inti;

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

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

printf(“Over
”);

}

用户A:

#include

main()

{

inti;

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

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

return;

}

提交时会提示有冲突,这样需要手工编辑,这时如果用户A运行了$cvsupdate之后,再编辑test.c,会看到test.c的内容是这样的:

#include

main()

{

inti;

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

=======

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

>>>>>>>1.5

 

printf("Count:%d
",i);

<<<<<<
return;

=======

printf("Over
");

>>>>>>>1.5

}

这样就需要,根据任务的不同,来手工修改,这是比较麻烦的,所以在真正的协作开发中,很少,对同一个文件给与,很多人相同的提交权限.

3.4文件版本管理

版本管理系统,最重要的莫过于对文件版本的管理,系统默认的版本升级使用的版本号是一定的.如果由于特殊需要,要自己定义出文件的版本号时,你可以用一下命令:

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:LINUX作CVS服务器之二

下一篇:Linux网络服务器配置基础