Subversion 的功能
Subversion 哪裡比 CVS 設計更好? 這裡是個簡短的列表, 以滿足你的好奇心.
如果你不熟悉 CVS 的話, 可能不了解這些特色在哪裡.
別害怕: 第二章會提供你版權控制的簡單介紹.
目錄版本控制
Subversion 的檔案庫並不像 CVS; 相反地, 它實作一個 “虛擬” 的版本控管檔案系統,
能夠依時間追蹤整個目錄的更動. 檔案和目錄都被納入版本控管.
最後, 用戶端有真正可用的 move (移動) 與 copy 指令.
不可分割的送交
一個送交動作, 不是導致所有更動都送入檔案庫, 就是完全不會送入.
這讓發展人員以邏輯區段建立更動, 並送交更動.
納入版本控管的中介資料 (Meta-data)
每一個檔案與目錄都附有一組隱形 “性質 (property)”.
你可以自己發明, 並儲存任何你想要的鍵值對. 性質是隨著時間來作版本控管的,
就像檔案內容一樣.
Choice of network layer
Subversion 有抽象的檔案庫存取概念, 可以讓人很容易地實作新的網路機制.
Subversion “先進” 的網路伺服器, 是 Apache 網頁伺服器的一個模組,
它以稱為 WebDAV/DeltaV 的 HTTP 變體協定與外界溝通.
這對 Subversion 的穩定性與互通性有很大的幫助, 而且額外提供了許多重要功能:
舉例來說, 有身份認證, 授權, 線上壓縮, 以及檔案庫瀏覽.
另外也有小而獨立的 svn 伺服器程式, 使用的是自訂的通訊協定,
可以很容易地透過 ssh 以 tunnel 方式使用.
一致的資料處理方式
Subversion 使用二進制差異運算法, 來表示檔案的差異,
它對文字 (人類可理解的) 與二進制檔案 (人類無法理解) 兩類的檔案都一視同仁.
這兩類的檔案都同樣地以壓縮形態儲存在檔案庫中,
而且檔案差異是以兩個方向在網路上傳送的.
更有效率的分支 (branch) 與標記 (tag)
分支與標記並不必一定要與計畫大小成正比. Subversion 建立分支與標記的方法,
只是複製該計畫, 使用的方法就像 hard-link 一樣. 所以這些動作只會花費很小,
而且是固定的時間.
Hackability
Subversion 沒有任何的歷史包袱; 它主要是一群共用的 C 程式庫,
具有定義完善的 API. 這使得 Subversion 便於維護,
並且可被其它應用程式與程式語言使用.