天天看點

SVN是什麼

什麼是Subversion?

Subversion是一個免費的、開放源碼的版本控制系統。就是說,Subversion管理随時改動的檔案和目錄。檔案樹被放在一個中央資料庫(Repository)中。這個資料庫象一個普通的檔案伺服器,但是它可以記錄檔案和目錄的每次改動。它允許你恢複以前舊版本的資料,或者檢查資料變化的曆史。是以,很多人把版本控制系統看成某種“時光機”。

Subversion允許通過網絡通路它的資料庫,因而可以被位于不同計算機前的人們同時使用。在某種程度上,允許人們從自己的地方修改和管理同一組資料有助于促進互相間的合作。由于不再受任何修改都必須通過單一管道來進行的限制,改進可以更快的實施。而且因為工作被本化了,你不必擔心取消限制會導緻工作品質下降。如果對資料作了不正确的改動,隻要撤銷就行了。

一些版本控制系統也是軟體配置管理(SCM)系統。這些系統針對管理程式源代碼特别定制,有很多專用于軟體開發的功能。比如,系統可以了解程式設計語言或者支援軟體建構工具。然而Subversion不是這樣的系統。它是一個通用的系統,可以用來管理任何檔案集合。對你來說可能是源代碼,對别人來說,可能是從購物清單到數字影像的混合,或更多别的檔案

Subversion 的曆史

在2000年初,CollabNet公司開始尋找開發人員寫一個CVS的代替品。CollabNet供應一個稱作SourceCast的協作軟體包,其中一個元件是版本控制。雖然SourceCast使用CVS作為它最初的版本控制系統,但是從一開始CVS的局限就很明顯,CollabNet明白必須找到一個更好的系統。可是,CVS之是以已經成為開放源碼界的事實标準,很大程度上是因為沒有更好的,至少沒有更好的而且免費的系統。是以CollabNet決定從頭開發一個新的版本控制系統,保留CVS的基本思想,但沒有它的錯誤和局限。

2000年2月,他們聯系了Open Source Development with CVS (Coriolis, 1999)的作者Karl Fogel,問他是否願意為這個新項目工作。巧的是這時Karl已經在和他的朋友Jim Blandy讨論一個新的版本控制系統的設計。在1995年,兩人開了一家提供CVS技術支援的公司,叫作Cyclic Software。雖然公司已經賣掉了,他們仍然在日常工作中使用CVS。在使用CVS時受到的束縛已經讓Jim開始仔細思考管理版本化資料的更好的路子。他不僅已經起好了名字“Subversion”,而且有了Subvesion資料庫的基本設計。當CollabNet打來電話時,Karl立刻同意為這個項目工作。Jim征的得他的老闆RedHat Software的同意,讓他投入這個項目,而且沒有時間限制。CollabNet雇用了Karl和Ben Collins-Sussman,從5月份開始詳細設計。由于Greg Stein 和CollabNet的Brian Behlendorf 和Jason Robbins 作了恰當的推動,Subversion很快吸引了一個活躍的開發人員社群。這說明了許多人有相同的受制于CVS的經驗,他們對終于有機會對它做點什麼表示歡迎。

最初的設計團隊設定了幾個簡單的目标。他們并不想在版本控制方法論上有新突破。他們隻想修補CVS。他們決定Subversion應該與CVS相似,保留相同的開發模型,但不複制CVS最明顯的缺點。雖然它不一定是CVS的完全的替代品,它應該和CVS足夠象,進而任何CVS使用者可以不費什麼力氣的轉換過來。

經過14個月的編碼,在2001年8月31号,Subversion 可以“自我寄生”了。就是說,Subversion開發人員停止使用CVS管理Subversion的源代碼,開始使用Subversion代替。

雖然CollabNet發起了這個項目,而且仍然支助一大部分的工作(它為一些專職的Subversion開發人員發薪水)。但是Subversoin象大部分開放源碼的項目一樣運作,由一個松散透明,鼓勵能者多勞的規則管理。CollabNet的版權許可證和Debian FSG完全相容。換句話說,任何人可以免費下載下傳,修改,按自己的意願從新分發Subversion,而不必得到來自CollabNet或其他任何人的許可。

繼續閱讀