版本控制是管理數據變更的一種技術。對于程序員來說,它已經成為不可或缺的工具,因為他們經常修改軟件代碼,產生部分的變更,然后第二天再取消所有的變更。想象有一群程序員同時工作的情況你就能理解,為什么需要一個良好的系統來管理可能出現的混亂。
Subversion 是一個開源的版本控制系統, 也就是說 Subversion 管理著隨時間改變的數據。 這些數據放置在一個中央資料檔案庫 (repository) 中。 這個檔案庫很像一個普通的文件服務器, 不過它會記住每一次文件的變動。 這樣你就可以把檔案恢復到舊的版本, 或是瀏覽文件的變動歷史。 許多人會把版本控制系統想像成某種 “時光機器”。
某些版本控制系統也是 SCM(software configuration management) 系統。 這些系統是特別設計來管理大量代碼的, 而且具有許多專門針對軟件開發的功能,像通俗易懂的程序語言, 或是提供編譯軟件的工作。 不過 Subversion 并不是這樣的系統; 它是一個通用的系統, 可用來管理任何類型的文件, 其中包括了程序源碼。
早在2000年,CollabNet, Inc.(http://www.collab.net)就開始召集開發人員開發CVS的替代品。CollabNet 提供一套名為SourceCast協同工作套件,其中的一部分組件是版本控制。雖然SourceCast使用CVS作為其最初的版本控制系統,但是CVS的種種限制從一開始就處處可見,最后CollabNet明白必須要找到一個更好的解決方案。不幸的是,至少在免費license中,因為沒有更好的選擇,CVS已經廣泛成為了開源世界中事實上的標準。所以CollabNet決定開發一個新的版本控制系統,保留CVS的基本特性但去處CVS的bug和不好的特性。
在2000年2月,他們聯系《使用CVS開發開源項目》(Open Source Development with CVS)(Coriolis, 1999)的作者Karl Fogel,并征求了他是否愿意在這個新的項目中擔任一個角色。巧合的是,當時Karl已經和他的朋友Jim Blandy討論了一個關于新的版本控制系統的設計。在1995年,這兩人就成立了Cyclic Software,一個提供CVS的商業支持的軟件公司。雖然他們經營商業服務,但是仍然在每天都在工作中使用CVS。使用CVS的挫折感使得Jim認真思考更好的方法來管理數據,不但確定名字為“Subversion”,而且完成了Subversion檔案庫的基礎設計。
原文轉自:http://www.anti-gravitydesign.com