登入  |  English
感謝您對「自由軟體鑄造場」的支持與愛護,十多年來「自由軟體鑄造場」受中央研究院支持,並在資訊科學研究所以及資訊科技創新研究中心執行,現已完成階段性的任務。 原網站預計持續維運至 2021年底,網站內容基本上不會再更動。本網站由 Denny Huang 備份封存。
也紀念我們永遠的朋友 李士傑先生(Shih-Chieh Ilya Li)。

2. 版本控制系統概述 -- 以 Subversion 為例

在自由軟體社群所用的的開發工具中,有非常多種不同的版本控制系統。自由軟體鑄造場目前提供了其中兩套最被廣為應用的系統:Subversion 與 CVS。以下我們將以較新且功能較完整的 Subversion 為例,介紹版本控制系統的一些基本觀念,並探討這樣的系統如何幫助我們解決問題。

 

Subversion 是一個自由/開放源碼的版本控制系統,管理著隨時間而改變的檔案。檔案放置在一個中央檔案庫 (repository) 中。這個檔案庫很像一個尋常的檔案伺服器,不過它會記住每一次檔案的變動。這樣你就可以把檔案回覆到舊的版本,或是瀏覽檔案的變動歷程。許多人會把版本控制系統想像成某種"時光機器"。每個使用者在自己的電腦擁有一或多份工作複本(working copy),在本地編輯檔案後,再透過用戶端程式(client)將檔案送回檔案庫,或要求用戶端程式從檔案庫取出其他人所寫入的資料。

這樣做有什麼特別之處? 到目前為止,這些聽起來就像一個典型的檔案伺服器。事實上,檔案庫就是一種檔案伺服器,但是與你所見的不太相同。讓 Subversion 檔案庫如此不同的原因,在於它會記住所有的更動:每個檔案的每一個更動,甚至是每一個目錄所作的更動,像是目錄與檔案的新增,刪除,以及重新編排。

當一個用戶端自檔案庫讀取資料時,它通常只會看到最新版本的檔案樹。但是用戶端也可以看到早先的檔案。舉例來說,用戶端可以查詢過往的狀態,像是 "上個星期三,這個目錄裡有什麼東西?",或 "誰是最後一個更動這個檔案的人,而且作了哪些更動?" 這就是任何版本控制系統的核心問題:記錄並追蹤隨著時間對資料所作的更動。


 





分類: Subversion