Subversion

此頁由 Linux Wiki用戶Schengyue 於 2009年9月30日 (星期三) 13:49 的最後更改。 在Saber的工作基礎上。

出自Linux Wiki

提示:此文已超过 14 年(5320 天)未更新,如发现内容过时或有误,欢迎改进:)

Subversion,簡稱SVN,是一個版本控制系統,和RCSCVS比較而言,採用了分支管理系統,它的設計目標就是取代CVS。互聯網上越來越多的免費版本控制服務從CVS轉移到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或其他任何人的許可。

基本命令

Subversion指令的基本格式為:

svn command(or abbr) args
Subversion基本命令列表(即上面格式中的command(or abbr))
指令 縮寫 說明
checkout co 從版本庫簽出本地副本
add 把文件和目錄納入版本控制,通過調度加到版本庫。它們會在下一次提交時加入。
delete del,remove,rm 從版本庫中刪除文件和目錄
commit ci 把工作副本的修改提交到版本庫
status 查看當前的工作版本中,自己都做了哪些新的改動。M代表修改的文件,?代表新出現的文件(版本庫中沒有),!代表從版本庫中消失的文件
Note.gif
TODO:
完善更多指令

圖形化界面

Subversion本身包括了一個命令行工具用於在終端對Subversion進行操作,有許多工具都實現了Subversion的圖形化界面,方便開發者進行操作。 目前常見的工具有以下幾種:

RapidSVN

跨平台的一個svn客戶端

TortoriseSVN

一個Windows下的svn客戶端,提供和Windows資源管理器的整合功能。

kdesvn

KDE下的一個svn客戶端,在KDE4下可以支援和Dolphin的整合。

gnubversion

Gnome下的一個工具,本身沒有版本庫瀏覽功能,提供和Nautilus的整合。

Linux下的IDE

一些IDE也都提供了對Subversion的整合支持,比如KDevelop,Anjuta,Eclipse(需要subclipse插件)。

Subversion服務器的使用

Subversion提供了一個用於建立SVN服務器的命令svnserve,你可以通過它在一台計算機上搭建一個svn服務器。 首先要用

svnadmin create <dir>

創建你的版本庫。這是一個你的計算機上的目錄。創建好後可以到該目錄下的conf目錄設置訪問權限及密碼。 然後可以使用

svnserve [options] -r <dir>

啟動服務器。詳細參數參考

svnserve --help

Subversion與Apache

Apache下有一個mod可以提供http界面下的svn訪問。

Note.gif
TODO:
Apache下的httpd.conf配置

Subversion的版本

目前Subversion最新版本為1.5.5

Note.gif
TODO:
SVN版本之間的兼容性

參考資料

本文对您有帮助?分享给更多朋友!

反馈与讨论

发现文档不全面、有错误却没时间编辑文档?想分享自己的经验或见解?欢迎在此留言、讨论。
简体繁体转换