一. 什麼是Subversion?
Subversion是一個被設計成爲CVS繼任者的新版本控制系統。
二. 軟件下載
首先到http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91下載安裝包,這是windows系統下的,其他系統的請到 http://subversion.tigris.org/project_packages.html 去找對應的來下載。
三. 搭建服務器
如果你並不關心服務器端,那你可以直接看第三章使用客戶端。
STEP 1:創建版本庫(repository)
命令行運行:
svnadmin create d:/svndatabase
|
D:/svndatabase 就是我指定的版本庫的位置了
STEP2:建立用戶
打開d:/svndatabase/conf 目錄,這個conf目錄是第一步建立版本庫時創建的。打開svnserve.conf 找到以下兩句:
#[general] #[password-db = passwd] |
去掉每行開頭的註釋符#,其中第二行是指定身份驗證的文件名,即passwd文件。打開passwd文件,找到
#[users] # harry = harryssecret # sally = sallyssecret |
去掉#[users]前的#,下面就是用戶了,一行一個,格式是 用戶名 = 密碼。
STEP3:啓動SVN服務
命令行執行
svnserve --daemon --root d:/svndatabase
|
開着個command窗口總是讓人不爽,沒關係,你可以用 svnservice.exe 這個程序把svnserve作成服務。
STEP4:把svn作爲服務運行(Windows NT)
寫到這裏發現svnservice.exe 官方網站居然沒有了,原來 subversion 從1.4開始本身就集成了Windows服務的工具。詳細介紹請參看http://www.subversion.org.cn/index.php?option=com_content&task=view&id=83&Itemid=9 和 http://svn.collab.net/repos/svn/tags/1.4.0/notes/windows-service.txt
客戶端有純命令行客戶端,也有GUI客戶端。
作爲初學者,我認爲首先應該使用命令行方式,這樣有助於理解,在命令行方式比較熟悉之後再轉用GUI客戶端。
STEP1:建立項目
首先在一個臨時目錄下規劃好項目的主目錄結構:
/temp/project /temp/project/branches/ /temp/project/tags/ /temp/project/trunk/ /temp/project/trunk/main.cpp /temp/project/trunk/toolbar.cpp ………… makefile |
現在可以將目錄結構和數據導入版本庫了
svn import project svn://svnserveraddress/project –m “init import”
|
如果服務器就是你的本地機器你也可以這樣寫
svn import project file:///d:/svndatabase/project -m”init import”
|
執行上面的命令,你當然都要在temp 下。第一次使用 svn 命令時,由於你沒有指定username,所以會提示你輸入用戶名和密碼,當然你也可以通過 –username 和 –password 參數來提供。Subversion 會在本機緩存你的用戶名和密碼,下次使用時就無需再提供用戶名和密碼了,如果你覺的這樣不安全,可以通過 –no-auth-cache參數指定不要緩存用戶名和密碼。注意上面提到的幾個參數都是兩個橫槓哦。
當屏幕出現
Committed revision 1 |
說明版本庫已經包含你的目錄和數據了。現在可以刪除這個temp目錄了。現在進入下一步了。
STEP2:獲取工作拷貝
選擇你的工作目錄,比如 d:/myproject,命令行執行:
svn checkout svn://svnserveraddress/project/trunck AppName
|
這樣在d:/myproject 目錄下就有了一個AppName的目錄,他對應的就是版本庫裏project/trunk目錄。現在你就可以在這個目錄下開始修改文件了。修改完成以後就可以進入下一步。
STEP3:提交修改
在d:/project/appname 目錄下執行
svn commit |
當另外的用戶對這個項目作了修改並提交後,你就使用下面的命令使你的工作拷貝和版本庫同步。
svn update |
當你增加了新的文件和目錄時可以使用 svn add 命令。
警告
你可以使用任何你喜歡的工具編輯文件,但你不可以在修改目錄結構時不通知subversion,需要使用 svn copy 、svn delete、svn move命令修改工作拷貝的結構,使用 svn add 增加版本控制的新文件或目錄。
至於GUI客戶端,我目前使用TortoiseSVN。
五. 分支、標籤和合並
爲什麼要在這裏講分支、標籤和合並?很多人包括一些使用版本控制系統有一段時間的人,幾乎從來沒有用過分支和標籤功能,他們實際上只是把版本控制系統當成一個代碼備份系統再使用。
以下兩種情況都需要使用分支
u 大多數軟件存在這樣一個生命週期:編碼、測試、發佈然後重複。這樣有兩個問題,第一,開發者需要在質量保證小組測試假定穩定版本時繼續開發新特性,新工作在軟件測試時不可以中斷;第二,小組必須一直支持老的發佈版本和軟件,如果一個bug在最新的代碼中發現,它一定也存在已發佈的版本中,客戶希望立刻得到錯誤修正而不必等到新版本發佈。
u 你可能要對項目做一些複雜的修改,整個修改可能會持續一週或更長的時間,這時團隊中其他人還要繼續工作,不能應爲你的修改導致團隊其他人只能停止工作。
上面兩種情況版本控制都可以幫助你。具體的介紹請看svn-book. .
六. 網上資源
官方網站
客戶端
注:本文部分內容摘抄於 http://www.duduwolf.com/post/setting_up_subversion.asp
http://www.duduwolf.com/cmd.asp?act=tb&id=296