您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源配置管理工具 > cvs
教你用Linux作CVS服務(wù)器
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/1/28 13:41:26 ] 推薦標(biāo)簽:

一、版本控制的概念以及幾種版本控制工具的簡(jiǎn)介

1.源文件的標(biāo)示與版本的概念

源文件是一個(gè)軟件為重要的一個(gè)組成單元,因此源文件的管理也是整個(gè)軟件組成管理中重要的一環(huán),是進(jìn)行高效軟件開(kāi)發(fā)的關(guān)鍵歲所在.對(duì)源文件進(jìn)行管理,必須對(duì)源文件進(jìn)行標(biāo)示.通常認(rèn)為只需文件名.而實(shí)際上,在一個(gè)版本維護(hù)工具下對(duì)于源文件的標(biāo)示包括兩部分:文件名與版本.即:源文件可以用如下的二元組表示 {filename,version};

所謂版本,一般的軟件開(kāi)發(fā)人員都有一個(gè)直觀的理解,但卻很難做出準(zhǔn)確的定義.版本,是指某一特定對(duì)象的具體實(shí)例的潛在存在.這里的某一特定對(duì)象是指由版本維護(hù)工具管理的如軟件組成單元,一般指源文件.具體實(shí)例則是指軟件開(kāi)發(fā)人員從軟件儲(chǔ)藏室中恢復(fù)出來(lái)的軟件組成單元的具有一定內(nèi)容和屬性的一個(gè)真實(shí)拷貝.

把版本定義成一個(gè)潛在的存在是基于以下考慮:版本作為源文件的一個(gè)表示部分,軟件人員對(duì)它的引用實(shí)際上想得到不同的版本對(duì)應(yīng)的不同源文件,所以說(shuō)版本是一種抽象.它用來(lái)定義一個(gè)具體實(shí)例應(yīng)該具有的內(nèi)容與屬性.也是說(shuō)版本是一個(gè)具體實(shí)例的潛在存在,是源文件不同化身的抽象.

有了以上對(duì)版本概念的認(rèn)識(shí).大家對(duì)版本維護(hù)工具有了一定的理解:版本維護(hù)工具,應(yīng)該對(duì)開(kāi)發(fā)人員屏蔽源文件的存儲(chǔ)方式對(duì)開(kāi)發(fā)人員是透明的,開(kāi)發(fā)人員不需要明白軟件存儲(chǔ)庫(kù)里有什么源文件,只需要說(shuō)明需要什么樣的源文件以及要存儲(chǔ)什么樣的源文件,版本維護(hù)工具自動(dòng)完成這一切工作.關(guān)于版本維護(hù)的理論還包括:版本的空間,維數(shù),版本的表示,存儲(chǔ),合并等理論,因?yàn)槲覀冞@里主要說(shuō)明cvs 的linux 服務(wù)器,所以一切從簡(jiǎn),對(duì)這方面有興趣朋友可以閱讀相關(guān)書(shū)籍

本章所講的cvs 是這樣的一個(gè)強(qiáng)大的工具.在講述cvs 前我們先介紹其他幾個(gè)版本維護(hù)工具.

2.幾種版本維護(hù)工具的簡(jiǎn)介

2.1 SCCS

SCCS的全稱是Source Code Control System .在介紹之前先定義工作文件的概念.所謂工作文件,是指從軟件儲(chǔ)藏室得到的有”寫(xiě)”權(quán)限的源文件.

SCCS 是一種基本的源文件版本控制工具,它適用于任何正文文件的版本維護(hù).它基于單一文件的版本控制,通常,它的軟件儲(chǔ)藏室和要維護(hù)的文件在同一目錄下.

SCCS 工作時(shí),有一個(gè)專門(mén)的SCCS 格式的文件保留其源文件的編碼版本,其記錄了足夠的信息來(lái)生成新的版本,并記錄了誰(shuí)對(duì)文件有修改權(quán),擁有該版本的”鎖”.

SCCS的版本好事一個(gè)四元組,即:發(fā)行號(hào),級(jí)號(hào),分支號(hào),序號(hào)(release,level,banch,sequence)

2.2 RCS

RCS是另一種基本的源代碼管理工具,是WALTER.f.Tichy 于1980 年在Indina的 Purdue 大學(xué)開(kāi)發(fā)的.RCS和SCCS 類似,也是基于單一文件的版本維護(hù)系統(tǒng).RSC 通過(guò)RSC 文件進(jìn)行文件管理;使用RCS 進(jìn)行維護(hù)的過(guò)程與SCCS 相似,也是按恢復(fù)提交模式進(jìn)行的,不多贅述

RCS文件,是RCS 系統(tǒng)中源文件的儲(chǔ)藏室,它是一種特殊的編碼文件,包含了開(kāi)發(fā)人員恢復(fù)老版本的源文件以供開(kāi)發(fā)使用的足夠信息.它通常是以.V 為后綴

它的結(jié)構(gòu)如下:

* RCS 頭,這一部分記錄了對(duì)應(yīng)文件的版本樹(shù)的頭版本號(hào),

* 版本描述: 這一部分描述RCS樹(shù)上的各個(gè)節(jié)點(diǎn)的屬性性質(zhì)

* 初始信息:之一部分是在創(chuàng)建第一個(gè)RCS 版本時(shí)的表述內(nèi)容

* 文件內(nèi)容

RCS與SCCS 相似,RCS將所維護(hù)的版本也組織成樹(shù)形結(jié)構(gòu).但RCS允許多重分支,即,RCS的版本號(hào)不像SCCS那樣是一個(gè)四元組.形式為;發(fā)行號(hào),級(jí)號(hào),[分支號(hào),序號(hào)].版本樹(shù)如下

2.3 綜述

這兩種版本維護(hù)工具的共同點(diǎn)是:采用了”鎖”的方式,對(duì)當(dāng)前問(wèn)堅(jiān)持有”鎖”的用戶才有對(duì)文件的修改權(quán).他們采用的機(jī)制是所謂的” lock-modify-unlock”.采用這種即只有一個(gè)知名的弱點(diǎn),那是不至此多用戶并發(fā)的使用.

二、在linux 下構(gòu)建cvs 服務(wù)器

1.CVS簡(jiǎn)介及基本原理

CVS 的全稱是Current Version Control. CVS是一種GNU 軟件包.由Intersolv公司開(kāi)發(fā),新的版本是 1.10.8.它是一種基于RCS系統(tǒng)的維護(hù)工具.它明確的將源文件的存儲(chǔ)和用戶的工作空間獨(dú)立開(kāi)來(lái),有在一定的模式上擴(kuò)展了RCS的恢復(fù)提交功能. 并使其有利與并行開(kāi)發(fā).

CVS 將源文件的RCS 文件根據(jù)其源碼樹(shù)的層次集中在一個(gè)目錄下,該目錄的路徑由環(huán)境變量CVSROOT 定義.

可見(jiàn)該目錄可以分成兩部分:一部分為${CVSROOT}/CVSROOT,它包含CVS所需的一些管理 文件.另一部分為源文件所形成的RCS 文件,并按軟件開(kāi)發(fā)的源碼樹(shù)的結(jié)構(gòu)來(lái)構(gòu)成.

2.CVS 在進(jìn)行源代碼管理時(shí)的特點(diǎn)

2.1 源代碼空間與用戶空間分離.

CVS 系統(tǒng)將源代碼文件放在repository下,用戶要修改文件必須將repository 下的文件作一個(gè)拷貝之后才能進(jìn)行,

2.2 并發(fā)訪問(wèn)

CVS 系統(tǒng)允許多個(gè)開(kāi)發(fā)人員同時(shí)獲取同一文件的的同版本源文件.當(dāng)然這也是CVS獲得廣泛應(yīng)用的主要原因.開(kāi)發(fā)人員提取一個(gè)文件時(shí),將在自己的工作空間建立一個(gè)與其他開(kāi)發(fā)人員相互獨(dú)立的拷貝,此文件的版本號(hào)與文件“頭”版本相同,除非他用commit 命令完成版本的性升級(jí).而此時(shí),其他用戶可用 undate 命令是自己的版本號(hào)與”新的頭版本號(hào)”相一致.:若用戶在checkout 后發(fā)現(xiàn)頭版本改變了,可用RCS系統(tǒng)的rcsmerge 命令形成一個(gè)新文件,這個(gè)新文件及包括原來(lái)的內(nèi)容,又包括用戶修改的內(nèi)容.此示弱與其他同時(shí)在對(duì)同一文件修改的開(kāi)發(fā)人員發(fā)生沖突,可通知他們進(jìn)行手工修改

所以說(shuō),CVS系統(tǒng)是一個(gè)Copy-Modify-Merge 的算法而不是以上我們提到的那兩個(gè)系統(tǒng)所采用的lock-modify-unlockj機(jī)制 這種算法的好處在于,軟件開(kāi)發(fā)人員可以得到一份源文件的拷貝(Copy),并不會(huì)對(duì)該文件上”鎖”,因此為并行開(kāi)發(fā)提供了可能,在得到 拷貝后, 開(kāi)發(fā)人員可以在自己的開(kāi)發(fā)環(huán)境下進(jìn)行修改(Modify),然后提交自己修改后的文件,與源文件進(jìn)行合并(Merge).形成新的版本,

2.3 源文件共享

CVS對(duì)${CVSROOT}的使用是不同的用戶可按自己的需要拷貝不同的模板,修改后載體交給${CVSROOT}.這樣用戶可共享源文件.這當(dāng)然是我們建立CVS服務(wù)器所必需的

2.4 獨(dú)立的工作環(huán)境

用戶在自己的工作環(huán)境下進(jìn)行修改開(kāi)發(fā),自然有獨(dú)立的工作環(huán)境,值得說(shuō)的實(shí).CVS 也支持”鎖”的機(jī)制.允許用戶對(duì)自己獲得的模板拷貝進(jìn)行鎖定

2.5 標(biāo)記

CVS為了方便用戶,引入了一個(gè)tag文件,該文件位于用戶工作目錄下,與被他標(biāo)記的文件一級(jí)的CVS 目錄下對(duì)特定的tag 文件操作,即對(duì)相應(yīng)版本的操作,即使這個(gè)版本被修改過(guò).

上一頁(yè)12345678下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd