協作版本系統

CVS(英語:Concurrent Versions System,或Concurrent Versioning System)代表協作版本系統或者並發版本系統,是一種版本控制系統,方便軟體的開發和用戶協同工作。

基本介紹

  • 中文名:協作版本系統
  • 外文名:Concurrent Versions System
  • 縮寫:CVS
  • 領域:計算機
簡介,功能,限制,與GNU的關係,

簡介

很多開源或者自由軟體項目都使用CVS作為其程式設計師之間的中心點,以便能夠綜合各程式設計師的改進和更改。這些項目包括:GnomeKDEGIMPWine等。CVS的使用獲GNU通用公共許可證授權。
這是一個將一組檔案放在層次目錄樹中以保持同步的系統。人們可以從CVS伺服器上更新他們的本地層次樹副本,並將修改的結果或新檔案發回;或者刪除舊檔案。
CVS基於客戶端/伺服器結構的行為使得其可容納多用戶,構成網路也很方便。這一特性使得CVS成為位於不同地點的人同時處理數據檔案(特別是程式的原始碼)時的首選(現已被GitSVN等逐漸替代)。

功能

CVS採用客戶端-伺服器架構:伺服器存儲的當前版本(一個或多個)項目和它的歷史,和客戶端連線到伺服器,以便在這個副本中,並“退房”的項目的完整副本,工作之後“檢查”他們的變化。通常,客戶端和伺服器通過LAN或Internet連線,但如果CVS的任務是僅與本地開發人員一起跟蹤項目的版本歷史記錄,則客戶端和伺服器都可以在同一台計算機上運行。伺服器軟體通常在Unix上運行(儘管至少CVSNT伺服器也支持各種版本的Microsoft Windows),而CVS客戶端可以在任何主要版本上運行作業系統平台。
幾個開發人員可以同時處理同一個項目,每個開發人員在他們自己的項目“工作副本”中編輯檔案,並將他們的修改傳送(或簽入)到伺服器。為避免衝突,伺服器僅接受對最新版本檔案所做的更改。因此,開發人員應通過定期納入其他人的變更來保持其工作副本的最新狀態。此任務主要由CVS客戶端自動處理,僅在簽入修改與尚未檢查的檔案本地版本之間發生編輯衝突時才需要手動干預。
如果簽入操作成功,則所涉及的所有檔案的版本號自動遞增,並且CVS伺服器將用戶提供的描述行,日期和作者的名稱寫入其日誌檔案。每次提交後,CVS還可以運行外部的,用戶指定的日誌處理腳本。這些腳本由CVS的loginfo檔案中的條目安裝,該檔案可以觸發電子郵件通知或將日誌數據轉換為基於Web的格式。
客戶還可以比較版本,請求更改的完整歷史記錄,或者查看項目的歷史快照,如給定日期或修訂版號。
CVS伺服器可以允許“匿名讀取訪問”,其中客戶端可以簽出並比較版本與空白或簡單發布的密碼(例如,“anoncvs”);只有在這些情況下,更改的登記需要個人帳戶和密碼。
客戶端還可以使用“更新”命令使其本地副本與伺服器上的最新版本保持同步。這消除了重複下載整個項目的需要。
CVS還可以維護項目的不同“分支”。例如,軟體項目的發布版本可以形成一個分支,用於修復錯誤,而當前開發中具有重大更改和新功能的版本可以形成單獨的分支。
CVS使用增量壓縮來有效存儲同一檔案的不同版本。這適用於大型文本檔案,從一個版本到下一個版本的更改很少。這通常是原始碼檔案的情況。另一方面,當CVS被告知將檔案存儲為二進制檔案時,它會將每個單獨的版本保留在伺服器上。將檔案存儲為二進制檔案非常重要,以避免二進制檔案損壞。

限制

  • CVS不支持檔案的複製和重命名。
  • 沒有原子性提交(Atomic commit)
  • CVS只支持文字檔。

與GNU的關係

CVS和GNU項目之間的關係長期以來有些含糊不清:GNU網站分發了程式,在一個頁面上標記了“GNU包”,在另一個頁面上標記了“其他GPL許可項目”。2008年,當CVS的開發從舊網站(cvshome.org)轉移到GNU Savannah託管平台時,它被放置在“非GNU”部分。此外,在GNU的FTP下載伺服器上,CVS分布在“非gnu”目錄中。

相關詞條

熱門詞條

聯絡我們