首页 > 系统 > 关键词  > linux服务器最新资讯  > 正文

LINUX作CVS服务器之一

2008-09-08 17:56 · 稿源:互联网

一、版本控制的概念以及几种版本控制工具的简介

1.源文件的标示与版本的概念

源文件是一个软件最为重要的一个组成单元,因此源文件的管理也是整个软件组成管理中最重要的一环,是进行高效软件开发的关键岁所在.对源文件进行管理,必须对源文件进行标示.通常认为只需文件名.而实际上,在一个版本维护工具下对于源文件的标示包括两部分:文件名与版本.即:源文件可以用如下的二元组表示{filename,version};

所谓版本,一般的软件开发人员都有一个直观的理解,但却很难做出准确的定义.版本,是指某一特定对象的具体实例的潜在存在.这里的某一特定对象是指由版本维护工具管理的如软件组成单元,一般指源文件.具体实例则是指软件开发人员从软件储藏室中恢复出来的软件组成单元的具有一定内容和属性的一个真实拷贝.

把版本定义成一个潜在的存在是基于以下考虑:版本作为源文件的一个表示部分,软件人员对它的引用实际上想得到不同的版本对应的不同源文件,所以说版本是一种抽象.它用来定义一个具体实例应该具有的内容与属性.也就是说版本是一个具体实例的潜在存在,是源文件不同化身的抽象.

有了以上对版本概念的认识.大家对版本维护工具就有了一定的理解:版本维护工具,应该对开发人员屏蔽源文件的存储方式对开发人员是透明的,开发人员不需要明白软件存储库里有什么源文件,只需要说明需要什么样的源文件以及要存储什么样的源文件,版本维护工具自动完成这一切工作.关于版本维护的理论还包括:版本的空间,维数,版本的表示,存储,合并等理论,因为我们这里主要说明cvs的linux服务器,所以一切从简,对这方面有兴趣朋友可以阅读相关书籍

本章所讲的cvs就是这样的一个强大的工具.在讲述cvs前我们先介绍其他几个版本维护工具.

2.几种版本维护工具的简介

2.1SCCS

SCCS的全称是SourceCodeControlSystem.在介绍之前先定义工作文件的概念.所谓工作文件,是指从软件储藏室得到的有”写”权限的源文件.

SCCS是一种基本的源文件版本控制工具,它适用于任何正文文件的版本维护.它基于单一文件的版本控制,通常,它的软件储藏室和要维护的文件在同一目录下.

SCCS工作时,有一个专门的SCCS格式的文件保留其源文件的编码版本,其记录了足够的信息来生成新的版本,并记录了谁对文件有修改权,拥有该版本的”锁”.

SCCS的版本好事一个四元组,即:发行号,级号,分支号,序号(release,level,banch,sequence)

2.2RCS

RCS是另一种基本的源代码管理工具,是WALTER.f.Tichy于1980年在Indina的Purdue大学开发的.RCS和SCCS类似,也是基于单一文件的版本维护系统.RSC通过RSC文件进行文件管理;使用RCS进行维护的过程与SCCS相似,也是按恢复提交模式进行的,不多赘述

RCS文件,是RCS系统中源文件的储藏室,它是一种特殊的编码文件,包含了开发人员恢复老版本的源文件以供开发使用的足够信息.它通常是以.V为后缀

它的结构如下:

*RCS头,这一部分记录了对应文件的版本树的头版本号,

*版本描述:这一部分描述RCS树上的各个节点的属性性质

*初始信息:之一部分是在创建第一个RCS版本时的表述内容

*文件内容

RCS与SCCS相似,RCS将所维护的版本也组织成树形结构.但RCS允许多重分支,即,RCS的版本号不像SCCS那样是一个四元组.形式为;发行号,级号,[分支号,序号].版本树如下

2.3综述

这两种版本维护工具的共同点是:采用了”锁”的方式,对当前问坚持有”锁”的用户才有对文件的修改权.他们采用的机制是所谓的”lock-modify-unlock”.采用这种即只有一个知名的弱点,那就是不至此多用户并发的使用.

二、在linux下构建cvs服务器

1.CVS简介及基本原理

CVS的全称是CurrentVersionControl.CVS是一种GNU软件包.由Intersolv公司开发,最新的版本是1.10.8.它是一种基于RCS系统的维护工具.它明确的将源文件的存储和用户的工作空间独立开来,有在一定的模式上扩展了RCS的恢复提交功能.并使其有利与并行开发.

CVS将源文件的RCS文件根据其源码树的层次集中在一个目录下,该目录的绝对路径由环境变量CVSROOT定义.

可见该目录可以分成两部分:一部分为${CVSROOT}/CVSROOT,它包含CVS所需的一些管理文件.另一部分为源文件所形成的RCS文件,并按软件开发的源码树的结构来构成.

2.CVS在进行源代码管理时的特点

2.1源代码空间与用户空间分离.

CVS系统将源代码文件放在repository下,用户要修改文件必须将repository下的文件作一个拷贝之后才能进行,

2.2并发访问

CVS系统允许多个开发人员同时获取同一文件的的同版本源文件.当然这也是CVS获得广泛应用的主要原因.开发人员提取一个文件时,将在自己的工作空间建立一个与其他开发人员相互独立的拷贝,此文件的版本号与文件“头”版本相同,除非他用commit命令完成版本的永久性升级.而此时,其他用户可用undate命令是自己的版本号与”最新的头版本号”相一致.:若用户在checkout后发现头版本改变了,可用RCS系统的rcsmerge命令形成一个新文件,这个新文件及包括原来的内容,又包括用户修改的内容.此示弱与其他同时在对同一文件修改的开发人员发生冲突,可通知他们进行手工修改

所以说,CVS系统是一个Copy-Modify-Merge的算法而不是以上我们提到的那两个系统所采用的lock-modify-unlockj机制这种算法的好处在于,软件开发人员可以得到一份源文件的拷贝(Copy),并不会对该文件上”锁”,因此为并行开发提供了可能,在得到拷贝后,开发人员可以在自己的开发环境下进行修改(Modify),然后提交自己修改后的文件,与源文件进行合并(Merge).形成新的版本,

2.3源文件共享

CVS对${CVSROOT}的使用是不同的用户可按自己的需要拷贝不同的模板,修改后载体交给${CVSROOT}.这样用户可共享源文件.这当然是我们建立CVS服务器所必需的

2.4独立的工作环境

用户在自己的工作环境下进行修改开发,自然有独立的工作环境,值得说的实.CVS也支持”锁”的机制.允许用户对自己获得的模板拷贝进行锁定

2.5标记

CVS为了方便用户,引入了一个tag文件,该文件位于用户工作目录下,与被他标记的文件一级的CVS目录下对特定的tag文件操作,即对相应版本的操作,即使这个版本被修改过.

3.CVS的获得安装

CVS在一般的linux发行版本中都有默认的安装.如果你的系统没有安装也没有关系,CVS可以在intenet上很方便的得到.它的源码在ftp://202.113.29.4/pub1/unix/cvs它的说明文档在ftp://202.113.29.4/doc/cvs.任何人可以很方便的下载.目前他的最新版本是2..10.8..

安装过程大致如下:

在任一目录下解开下载的压缩文件.

利用文件包内的安装工具,完成安装,(内有说明文档).

通常是:makeconfig和makeinstall

(不通版本的,安装方法可能不同,具体的请参见,它自身所带的安装文档)

4.服务器的安装使用

在安装完CVS系统后我们便可以开始CVS仓库的安装.在linux环境里,CVS的使用一般是以命令行方式,也有一些GUI的前端工具,如TKCVS等.这里我们将应用CVS的一般命令即cvs[cvs的选项]cvs-command[command选项]的方式完成服务器的配置.

4.1软件仓库(repository)的管理

创建CVSROOT根目录

首先编辑有关的环境变量.(CVS的几个重要的环境变量如下:

CVSROOT仓库根目录的完整路径名

CVSREAD如果设置,表明在checkout操作时所有的文件都置成只读

CVSBINCVS利用了很多RCS的命令,指定乐RCS工具的路径

CVSEDITOR指定用户书写日志信息所使用的编辑器

CVS_RSH启动一个远程CVS服务器时,所使用的shell的名称

CVS_SERVER决定"cvsserver"的名字,缺省是CVS

CVSWRAPPERScvswrapper脚本,用来指定包装文件名.)

其中中重要的是CVSROOT,它指明了仓库所在的位置,在创立新的仓库时,它是必不可少的.因此一般需要加入环境变量CVSROOT的定义.如在/etc/bashrc文件中加入下面两行

CVSROOT=/cvsroot

exportCVSROOT

或者直接在命令行上执行

$exportCVSROOT=/cvsroot

然后在相应位置开始创建CVSROOT

$mkdircvsroot

$cvsinit

如果没有定义变量CVSROOT会出现这样的提示:

cvsinit:NoCVSROOTspecified!Pleaseusethe‘-d’option

cvs[initnaborted]:orsettheCVSROOTenvironemntvariable

如果你是在不想定义环境变量,你可以用这样的命令:

cvs–d/cvrootinit不过即使你定义了CVSROOT,参数–d后的内容也会覆盖它.如果没有错误提示,恭喜你,你的CVS软件库已经建立好了.

剩下的问题就是怎样时多用户来使用这个仓库来进行并行的软件开发与版本控制.还有作为CVS管理员你应该设置你的用户的权限.此时,你的cvsroot下有一CVSROOT子目录.他下面的文件时CVS的配置文件,用

ls/cvsroot/CVSRO
  • 相关推荐
  • 大家在看
  • 腾讯云服务器12.12限时秒杀-1核2G首年50元

    腾讯云服务器12.12多种机型限时抢购,1核2G服务器4.17元/月,2核4G服务器6.17元/月,专业技术7*24小时在线服务,腾讯云为企业和个人提供快捷,安全,稳定的云服务!

    广告
  • SUSE Liberty Linux:确保Linux安全性,避免供应商锁定

    原因显而易见——开源能够促进协作,加快速度并提升互操作性...如何使工作负载在最能发挥其效能的地方运行,并简化IT管理?...SUSE Liberty Linux是一种新技术和支持产品,旨在为客户管理异构IT环境提供统一的支持体验...SUSE Liberty Linux的三大核心特性:...SUSE 是全球范围内创新且可靠的企业级开源解决方案领导者,财富 500 强中有 60% 以上的企业依靠 SUSE 为其关键任务的工作负载赋能......

  • 阿里巴巴为Linux内核调度提出组平衡器(GB)概念

    随着越来越多的组织为了发展云计算等业务配置他们的服务器在应用程序之间共享CPU核心/资源,而不是专门分配CPU核心给单个应用程序/任务,中国公司阿里巴巴正在为Linux内核调度器提出一个新的"组平衡器"概念以提升系统资源利用表现。拟议中的的Linux组平衡器主要是在任务间共享资源时减少资源冲突。这个平衡器的重点是在各组CPU核心之间平衡各组任务。关于这个组平衡器(GB)的"征求意见"今天被发出,并被总结为:"我们需要的是一种

  • 距离Linux桌面元年越来越近了

    今年早些时候,TechRepublic 认为虽然 2021 年不是 Linux 桌面元年,但不可否认的是 Linux 在企业领域持续主导地位、而 Linux 在桌面上也缓慢(和微妙)增长...Sebastian 所做的实验似乎表明,虽然有些游戏使用 Proton(Valve 的 Windows 兼容层)确实运行良好,但也有同样多的游戏运行有问题...在他的视频中,Linus 提到阻碍“Linux 桌面元年”的主要问题是碎片化......

  • Canonical正在招聘Ubuntu Linux桌面游戏产品经理

    Canonical正在寻求围绕Linux游戏的兴趣群体,以及由于Valve的Steam Play允许越来越多的引人注目的Windows游戏在Linux上运行而带来的更大前景。因此Canonical现在正在招聘Ubuntu的桌面游戏产品经理的新职位。Canonical希望这位潜在的客户经理可以"使Ubuntu成为最适合游戏的Linux桌面。我们与业界的合作伙伴合作,确保内置最新的图形驱动和调整,以获得最佳的帧率和延迟,并与游戏行业的合作伙伴合作,确保反作弊功能等机制,以确保?

  • 三星与特斯拉合发布23个补丁 FSD开始适用主线Linux内核

    三星与特斯拉合作发布了一组23个补丁,用于使特斯拉的完全自动驾驶(FSD)SoC适用于主线Linux内核。这23个补丁使特斯拉的完全自动驾驶SoC能够从上游Linux内核启动,而目前使用的是下游内核构建。特斯拉不仅利用Coreboot支持开源的AMD GPU Linux驱动,甚至支持将其添加到主线Linux内核中。Tesla FSD SoC支持包括设备树的添加和对内核的各种修改,以提供这种基本支持,该技术主要是建立在现有的三星Exynos SoC驱动路径上。由于利用了

  • 微软重塑"DXGKRNL"驱动 欲将其纳入Linux内核中

    早在2020年,微软宣布DXGKRNL驱动为内核驱动组件,用于支持Windows Subsystem for Linux(WSL2)中的GPU加速用例。最初的DXGKRNL驱动很快就被上游内核开发者提出了各种问题,而现在,在过去的一年里,微软一直在重新制作这个内核驱动,并在周三发布了新版本。DXGKRNL是他们的"DirectX"内核驱动组件,用于Windows Subsystem for Linux(WSL2),支持Hyper-V环境下的图形加速和GPU计算。DXGKRNL也将用于他们即将推出的Android Window

  • 新的跨平台"SysJoker"后门同时影响macOS、Windows、Linux

    据报道,新的"SysJoker"后门可以攻击多个操作系统,包括macOS、Windows和Linux。来自Intezer的研究人员透露,他们发现了SysJoker,这个后门最初被发现是攻击Linux的。不久之后,同一后门的变种被发现,它们可以扩展出对Windows和macOS进行攻击。这一发现是不寻常的,因为发现可以同时攻击多个平台的恶意代码是很罕见的。通常情况下,恶意软件只为攻击一个平台的特定漏洞而生成,而不是以类似的方式同时为多个平台开发。根据研究人?

  • 性能增超25%!AMD Zen4/Zen 4C处理现身Linux:最大128核

    日前有开源技术社区发现,对Zen 4和Zen 4C的支持已经在Linux中得以实现,其中Zen 4最高用于96核Genoa EPYC处理器,识别信息为AMD Family 19h Models 10h-1Fh;Zen 4C则将用于128核Bergamo EPYC处理器,识别信息为AMD Family 19h Models A0h-AFh...外界解读为这是Zen 4类似于Alder Lake也要上马大小核的信号,使得整个家族产品更具适配弹性......

  • CleanCache在被夸大宣传了十年后将从Linux内核中被清除

    十年前,CleanCache补丁系列被并入Linux内核主线,但现在它将退役。今天,作为AndrewMorton补丁的一部分,合并到Linux-Next中的CleanCache被移除了。为什么?因为它已经没有用户了。自从2019年移除XenTranscendent Memory(TMEM)驱动代码后,CleanCache已经没有任何用户了,但代码仍然在内核中赋闲。CleanCache是由甲骨文的工程师开发的,在推出时,他们宣布它是"非常酷的东西,有巨大的潜力使运行的虚拟机大幅优化/性能/效率,是

  • 最“根正苗红”的手机Linux系统,最终还是倒下了

    因为Tizen虽然如今几乎已经没啥名气了,但无论从其技术特征、还是传承的“血统”来说,都完全可以称得上是有史以来最“根正苗红”的手机端Linux操作系统...使用Maemo的诺基亚N810,可能很多诺基亚手机的老用户也从未接触过...然后,还有Linux基金会在2007年开始推动,旨在探索Linux在手机端技术可能性的LinuxMobile系统......

这篇文章对你有价值吗?

  • 热门标签

热文

  • 3 天
  • 7天