Linux CVS Server + jCVS-5.3.2 Client分散式開發(一) (轉)

worldblog發表於2007-12-12
Linux CVS Server + jCVS-5.3.2 Client分散式開發(一) (轉)[@more@]

Server + jCVS-5.3.2 Client分散式開發:namespace prefix = o ns = "urn:schemas--com::office" />

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

1.源的標示與版本的概念

原始檔是一個最為重要的一個組成單元,因此原始檔的管理也是整個軟體組成管理中最重要的一環,是進行高效的關鍵歲所在.對原始檔進行管理,必須對原始檔進行標示.通常認為只需檔名.而實際上,在一個版本維護工具下對於原始檔的標示包括兩部分:檔名與版本.即:原始檔可以用如下的二元組表示 {filename,version};

所謂版本,一般的軟體開發人員都有一個直觀的理解,但卻很難做出準確的定義.版本,是指某一特定的具體例項的潛在存在.這裡的某一特定物件是指由版本維護工具管理的如軟體組成單元,一般指原始檔.具體例項則是指軟體開發人員從軟體儲藏室中恢復出來的軟體組成單元的具有一定內容和屬性的一個真實複製.

把版本定義成一個潛在的存在是基於以下考慮:版本作為原始檔的一個表示部分,軟體人員對它的引用實際上想得到不同的版本對應的不同原始檔,所以說版本是一種抽象.它用來定義一個具體例項應該具有的內容與屬性.也就是說版本是一個具體例項的潛在存在,是原始檔不同化身的抽象.

有了以上對版本概念的認識.大家對版本維護工具就有了一定的理解:版本維護工具,應該對開發人員遮蔽原始檔的方式對開發人員是透明的,開發人員不需要明白軟體儲存庫裡有什麼原始檔,只需要說明需要什麼樣的原始檔以及要儲存什麼樣的原始檔,版本維護工具自動完成這一切工作.關於版本維護的理論還包括:版本的空間,維數,版本的表示,儲存,合併等理論,因為我們這裡主要說明cvs 的linux ,所以一切從簡,對這方面有興趣朋友可以閱讀相關書籍

本章所講的cvs 就是這樣的一個強大的工具.在講述cvs 前我們先介紹其他幾個版本維護工具.

2.幾種版本維護工具的簡介

2.1 SCCS

SCCS的全稱是 Code Control System .在介紹之前先定義工作檔案的概念.所謂工作檔案,是指從軟體儲藏室得到的有”寫”的原始檔.

SCCS 是一種基本的原始檔版本控制工具,它適用於任何正文檔案的版本維護.它基於單一檔案的版本控制,通常,它的軟體儲藏室和要維護的檔案在同一目錄下.

SCCS 工作時,有一個專門的SCCS 格式的檔案保留其原始檔的編碼版本,其記錄了足夠的資訊來生成新的版本,並記錄了誰對檔案有修改權,擁有該版本的”鎖”.

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

2.2 RCS

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 的全稱是Current Version Control. CVS是一種 軟體包.由Intersolv公司開發,最新的版本是1.10.8.它是一種基於RCS系統的維護工具.它明確的將原始檔的儲存和使用者的工作空間獨立開來,有在一定的模式上擴充套件了RCS的恢復提交功能. 並使其有利與並行開發.

CVS 將原始檔的RCS 檔案根據其原始碼樹的層次集中在一個目錄下,該目錄的絕對路徑由環境變數CVS 定義.

可見該目錄可以分成兩部分:一部分為${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).形成新的版本。

CVS基本使用介紹

cvs 是一個版本控制系統。簡單的說,他可以記錄程式碼修改的過程,有一個完整的 history闢如說,當你在修改程式碼的時候,不小心寫出了一個 ,但是你可能很久以後才發現多出了這個 bug, 這個時候, cvs 就能很有效的幫助你,找出是在哪一次的修改中,出現了這個bug。

在有版本控制系統之前,開發人員都是各自把的所有原始碼用tar打包儲存,這樣做是很浪費空間的。而cvs則不同,他在版本更改時,只儲存原始碼中作了更改的部分,這樣一是可以很有效的省下很多空間,二則是更能顯示出多人一起開發軟體的時候彼此之間的協調性。

Cvs支援訪問,使用者可以對他要修改的檔案加上編輯的flag,讓別人知道他要修改這個檔案了。

專業術語:

repository:意思是倉庫。在cvs裡,就是存放版本歷史記錄的地方。

pserver:這是cvs用來接受remote的cvs command用的。cvs有兩種模式, 一種是local, 一種是remote.

cvsroot:當你使用cvs的時候,必須設定CVSROOT這個環境變數,或是用-d這個選項來指定。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992131/,如需轉載,請註明出處,否則將追究法律責任。

相關文章