第14章 RCS和CVS的版本控制

2021-05-01 00:01:44 字數 2123 閱讀 2622

第14章  rcs和cvs得版本控制系統

1,rcs(revision control system) 修訂控制系統

特點:1),簡單

2),使用lock機制防止多個開發人員對同乙個檔案同時進行修改.

2,cvs(cocurrent version system)併發版本系統

建立在rcs基礎上,最流行的開放源**版本控制系統

特點:1),使用單一的主**樹,而不像rcs那樣依賴多個目錄.

2),最大優點在於多名開發人員可以同時對乙個檔案進行修改.允許合併.

這就"併發"開發. 

乙個版本控制系統最基本的功能就是記錄每次修改的地方,並且可以讓使用者方便地訪問各個版本、比較版本差異。更進一步的,是建立乙個多人開發的環境,可以計錄每個人的修改,解決版本衝突的問題。版本衝突問題是指兩個人同時對乙個檔案作修改的動作,舉個例子說,現在資料庫裡的版本是a,甲和乙分別把這兩個檔案拿出來(這個動作通常叫 checkout),在做了一番修改之後,甲先把改變的資料存回去(這個動作通常叫 checkin),這時問題還沒有發生,資料庫的板本被更新成b,但是當乙 checkin 的時候,問題就來了,乙的版本也是從 a 修改而來的,到底該用甲的修改版還是乙的呢?如果硬把甲的修改用乙的版本蓋過去,那甲所花的工夫就全部白費了。最常用的解決辦法是用檔案按鎖定的功能,就是當甲在修改某個檔案的時候,會把檔案加個 lock 的 flag 讓大家知道,這個檔案正在被修改,不要去動它。不過像 cvs等高階的版本控制系統,就算沒有做檔案鎖定的動作,發生版本衝突時,也提功了方便的功能可以把兩個版本 merge起來。

目前有許多商業與開放原始碼的版本控制系統. 在開放原始碼界, 最早出現的, 大概就是 sccs, 其後演變成為 rcs. 這兩個都是以個別檔案為基礎來進行版本控制. 後來就有了 cvs 的出現, 它架構在 rcs 之上, 並且可以處理多個檔案的送交 (也就是跟版本控制軟體說, 我有這些檔案更動過了, 請記住這些更動).

rcs(revision control system)

乙個相當相當古老的工具了,雖然現在大家都是用 cvs 來做版本控制的工具但是如果沒有可以使用的 cvs server 那就沒有辦法使用了,rcs 主要是偏個人使用的,沒有像 cvs 有許多強大的功能,也不支援遠端檔案系統的訪問。

但是在只需要單純的版本管理功能時,就相當的有用了。建議大家如果在工作站上寫程式,或是寫檔案的時後,可以試著用 rcs 來做版本管理的工作,一開始可能會覺得綁手綁腳的,但是用久了,你一定會發現使用版本控制系統真是好處多多!

使用 rcs 相當簡單,只有幾個指令而已,大部份系統都有包含。

簡單的使用方法就是這樣:

1. 建立 rcs 資料庫

先在想要儲存的程式**下的目錄下建立乙個叫 rcs 的目錄

mkdir rcs

2. 將檔案登入到rcs 資料庫

ci filename

這時,rcs 會要你輸入 log,就是記錄你對這個版本有什麼說名的地方,簡單說幾句就可以了,當然也可以不打,然後會給你乙個初始的版本編號,應該是1.1。你會發現到,原來的檔案不見了,而在 rcs 目錄下多了乙個叫做 filename,v 的檔案,那個檔案就是用來記錄 filename 的版本演進史的。

3. 把檔案取出來

檔案不見了,那還有什麼戲唱,能夠放進去的,當然就一定可以拿出來:

最基本的用法是這樣,會取出 filename 的最新版本。

co filename

但是,注意它的屬性,是唯讀的喔,要加上 -l 的引數表示要 lock 才可以做修改的動作,修改完了,再把檔案 checkin 回去就完成了版本更新的動作了,這時的版本編號應該是1.2。

另外,co -r filename可以取出指定的版本,但是其屬性一定是唯讀的。

4. 把修改的檔案存回rcs 資料庫

還是一樣,ci filename,不過可以加上 –u 的引數順便 unlock,如果要繼續編輯的話,要加上 –l ,不然會自動把原來目錄下的檔案刪除。

5. **乙個檔案的修改記錄

rlog filename

比較版本的差異

rcsdiff -r[version] filename

大概的使用方法就是這麼簡單,有了基本版本控制系統的概念之後,要使用 cvs、subversion 等高階的版本控制系統,就相當容易了。

cvs(concurrent versions system)

C 語言規範 版本5 0 第14章 列舉

列舉型別 enum type 是一種獨特的值型別 第 4.1 節 它用於宣告一組命名的常量。下面的示例 enum color 宣告乙個名為 color 的列舉型別,該型別具有三個成員 red green 和 blue。列舉宣告用於宣告新的列舉型別。列舉宣告以關鍵字 enum 開始,然後定義該列舉的名...

《C和指標》第14章 預處理器

14.2.1 巨集 define包括乙個規定,允許把引數替換到文字中,這種實現通常稱為巨集 macro define square x x x 則程式中的square 5 會被替換成 5 5 警告 例1 a 5 printf d n square a 1 會被替換成5 1 5 1,列印結果是11,不...

C和指標(第14章 預處理器)

程式編寫,編譯第一步就是巨集的宣告,也稱預處理器階段,在編譯之前,有刪除注釋,插入被 include指令包含的檔案的內容 和 define所替換的符號等。14.1 五種預處理符號 file name.c 進行編譯的源檔名 line 25 檔案當前的行號 date jan 14 2019 檔案被編譯的...