敬业的IT人 >> 操作系统 >> Unix >> 版本控制系統簡介 RCS/CVS/Subversion

版本控制系統簡介 RCS/CVS/Subversion

敬业的IT人 互联网 佚名 2008-4-23 11:59:41

一個版本控制系統最基本的功能就是記錄每次修改的地方,並且可以讓使用者方便地存取各個版本、比較版本差異。更進一步的,是建立一個多人開發的環境,可以 計錄每個人的修改,解決版本衝突的問題。版本衝突問題是指兩個人同時對一個檔案作修改的動作,舉個例子說,現在資料庫裡的版本是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

  6. 比較版本的差異
    rcsdiff -r[version] filename
    大概的使用方法就是這麼簡單,有了基本版本控制系統的概念之後,要使用 CVS、Subversion 等進階的版本控制系統,就相當容易了。

    RCS 官方網站

    The RCS MINI-HOWTO 中譯版

    OHaHa 的 RCS 教學

    CVSup 官方網站
    进入讨论组讨论。
粤ICP备06119539号
Copyright CiscoSky.Org,Some Rights Reserved.
Email:me1228#tom.com