Subversion 是個版本控制系統,用來追蹤╱管理╱回溯軟體專案的演進過程,常簡稱為 SVN。
歷史
2000 年初, CollabNet 開始找人想要寫一個可以取代 CVS 的版本控制系統。二月時,他們接觸了 Karl Fogel ("Open Source Development with CVS" 的作者)。而 Karl Fogel 其實早在 1995 年已經開始和他的朋友 Jim Blandy 討論新一代的版本控制系統,於是他很快的同意加入 CollabNet 的工作,同時 Jim 也得到 RedHat 對這新專案的贊助。
不久,CollabNet 聘用了 Karl 和 Ben Collins-sussman,並於 2000 年 5 月展開了 SVN 的設計工作。一開始的設計理念並不是全然打破 CVS 的蕃籬,另起版本控制系統的新灶,而是承襲原有 CVS 的使用習慣,把不好的地方加以修補改進。
SVN 的理念很快的吸引了許多追求更好的版本控制系統的發展者。在經過 14 個月的努力後,SVN 於 2001 年 8 月 31 日邁入新的里程碑,也就是正式採用 SVN 來管理 SVN 自己的程式專案,不再透過 CVS。
在 CollabNet 和各方持續的資助和推進下,Subversion 慢慢成熟和推廣,而成為現在所風行的版本控制系統。
主要特性
SVN 所紀錄的歷史以整個專案為單位,而 CVS 以單一個檔案為單位。
SVN 提供了 move、rename、copy 的觀念和操作,而CVS沒有。
SVN 在作 commit 時,會以整個變動作單位,若半途中斷則不影響原有的版本,但 CVS 則會有部份成功部份失敗的情形,影響整體的完整性。
SVN 提供了抽象的網路存取層,讓發展者能更容易實作新的操作方式。
SVN 對檔案的比對機制更一致,不用像 CVS 要分類成 binary 或 text 檔來作比對。
SVN 用 copy 的方式來進行 branching 和 tagging,類似硬式連結(hard-link)的作法使得操作簡單且有效率。