Subversion是一套使用開源碼開發的版本控制系統,它的設計目標就是取代目前的CVS。近年來由於資訊技術快速發展以致程式碼規模日亦複雜,舊的CVS 系統已經開始顯露疲態。相對於的RCS及CVS, Subversion採用了分支管理系統來接替 CVS。 設計者以兩個方法來贏得 CVS 使用者的心, 首先產生一個設計與外觀都類似 CVS 的開源碼系統, 進而再修正 CVS 中最廣為人知的缺點。雖然不是版本控制設計的偉大變革,但是 Subversion 絕對是個強力可用性高而且深具彈性的工具,近來新建置的版本控制多已改用此套系統。
Subversion 是一個用以分享資訊的中央系統,以檔案庫 (repository)作為儲存資料的核心。檔案庫儲存資料的形式是檔案系統樹 (filesystem tree) ,也就是典型的目錄與檔案的架構。用戶需先連上檔案庫然後對這些檔案作讀取或寫入的動作。 藉由共同資料庫觀念將資訊與他人共用。此節將說明目錄的結構。在專案的根目錄下建立的 trunk、branches、和 tags 這三個目錄是有特別意義的,它們的作用分別是:
- trunk 目錄用來存放目前專案正在進行開發的程式檔案和文件(又稱為主幹,即 mainline)。
- branches 用來存放主線的各個仍在發展中的分支。
- tags 則用來存放已經不再變動的分支,也就是其中的檔案不會再修改了。這是 Subverion 官方手冊建議的目錄結構安排方式。
Subversion 有一項功能可以幫助你維持檔案與目錄的平行分支。它讓你藉由複製資料來產生分支,並且會記住這些複本是彼此相關的,很多時候您會希望有另外一個複製的目錄來進行新的編修。等到確定這個分支的修改已經完畢了,再合併到原來的主要開發版本上。
分支的範例說明:
假設公司某部門有一份使用手冊, 某天另一個部門被要求與你使用同一份手冊, 由於部門不同內容也要有 '些微' 的修改,在這種情況下可使用分支將原手冊直接產生文件的第二份複本,然後兩個部門分別維護這兩份文件,如果未來兩個部門合併您也可以將分支文件?入原來的文件。換句話說,這兩條支線的發展途徑是各自獨立的,如果回溯的時間夠久你會發現它們的源頭都有共同的歷史紀錄。一個分支都是以某一文件的複本開始其生命週期,然後就自行發展下去有著自己的歷史紀錄,這就是分支的基本概念(如下圖)。
Subversion 的檔案庫設計相當地好。 當你複製一個分支時,你不必擔心檔案庫會變得非常大,Subversion 不會真的複製資料,它只是建立一個指向現存檔案的連結。分支前的資料仍然使用同一檔案,只有分支後的修改才會分別記錄在各分支內。
登入畫面 :
使用者: nidify
p/w: 暫不開放登入
出現如下登入後畫面表示有Subversion使用帳號