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

一、版本控制的概念以及幾種版本控制工具的簡介

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

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

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

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

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

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

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

2.1 SCCS

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

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

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

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

2.2 RCS

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

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

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

* RCS 頭,這一部分記錄了對應(yīng)文件的版本樹的頭版本號,

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

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

* 文件內(nèi)容

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

2.3 綜述

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

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

1.CVS簡介及基本原理

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

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

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

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

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

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

2.2 并發(fā)訪問

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

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

2.3 源文件共享

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

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

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

2.5 標(biāo)記

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

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