一、引言
筆者曾經(jīng)試圖在網(wǎng)上搜索一篇關(guān)于SVN源代碼服務(wù)器搭建方面的中文技術(shù)文章,可惜,所找到的,要么是不完整,要么就是對(duì)筆者沒(méi)什么幫助的文章,TortoiseSvn的幫助文檔固然強(qiáng)大,但因?yàn)槭怯⑽模皇呛苓m合來(lái)作為入門者使用;畢竟,TortoiseSvn是一個(gè)客戶端,服務(wù)器端的配置也很重要。
一年前,筆者剛剛畢業(yè),初入公司,在進(jìn)行開(kāi)發(fā)時(shí),由于沒(méi)有進(jìn)行軟件代碼版本管理,導(dǎo)致的結(jié)果是
- 軟件一天一個(gè)版本
- Bug日益增加且隱藏很深
- 代碼無(wú)法向前回溯
- 幾個(gè)月前修正過(guò)的Bug在幾個(gè)月后又重新出現(xiàn)
- ……
由于最近公司決定架設(shè)SVN源代碼服務(wù)器,來(lái)解決以上問(wèn)題,故筆者經(jīng)過(guò)一段時(shí)間的摸索和使用,便有了此文。
二、學(xué)習(xí)本文先決條件
如果作為讀者的你符合以下情況,那么本文可以對(duì)你起到一個(gè)很大的幫助作用:
- 具備基本的軟件開(kāi)發(fā)知識(shí)
- 了解Client/Server模型
- 正在被日益更新的軟件代碼版本所困擾
本文旨在指導(dǎo)讀者如何利用現(xiàn)有的軟件工具進(jìn)行軟件代碼版本管理工作,如果你對(duì)軟件版本控制與管理,維護(hù)與備份較為感興趣,可以閱讀此文來(lái)獲取一定的知識(shí)。
三、安裝SVN服務(wù)器端軟件
首先,你必須下載兩款軟件包:VisualSVN Server和TortoiseSVN,兩者都是開(kāi)源軟件,至于在哪里下載,百度或谷歌之,盡量使用最新版就好,我使用的版本如下:
服務(wù)器端:VisualSVN-Server-2.5.5.msi
客戶端:TortoiseSVN-1.7.5.22551-win32-svn-1.7.3.msi
雙擊以下圖標(biāo),打開(kāi)安裝包:

單擊“Next”

勾選“I accept...”,然后單擊“Next”

選擇第一個(gè)“安裝VisualSVN Server(可視化SVN服務(wù)器)”和“Management Console”

Location是你的安裝目錄,C盤或D盤都可以,Repositories是你的源代碼倉(cāng)庫(kù),也就是你SVN幫你管理代碼放置的位置,這里我選擇放置在D盤根目錄下,將“Use secure connection”復(fù)選框的勾去掉,然后在Server Port中填寫8080(填其他端口號(hào)也可以,但是確保該端口號(hào)未被占用),在這里不使用安全連接的原因是,它會(huì)導(dǎo)致通訊速度減慢(PS:當(dāng)時(shí)在公司配置時(shí)使用的secure connection,每次Checkout一次要15秒多的時(shí)間,無(wú)法忍受),然后單擊“Next”:

單擊“Install”

等待……

Finish!

單擊“Finish”后,會(huì)啟動(dòng)VisualSVN Server,可以看到,它的Status是:
VisualSVN Server is running
Server URL is http://motor-109133.hanslaser.com:8080/svn/
至此,服務(wù)器端軟件安裝完畢!

四、SVN服務(wù)器配置項(xiàng)目
右鍵單擊“Repositories”,選擇“Create New Repository...”

在“Repository Name”下方文本框填入“TestSvn”(作為測(cè)試用),將“Create default structure(trunk,branches,tags)”選項(xiàng)勾選上,單擊OK

可以看到在Repositories樹(shù)下面,有一個(gè)TestSvn庫(kù),這個(gè)TestSvn庫(kù)中有三個(gè)文件夾:
- branches(分支,修改特殊功能或者新功能的分支代碼,可與主干進(jìn)行合并)
- tags(標(biāo)記,設(shè)定milestone版本)
- trunk(主干,存放當(dāng)前正在編輯的代碼工程)

開(kāi)始新建用戶(用戶組管理請(qǐng)各位自己研究),右鍵單擊“Users”,選擇“Create User...”

在“Create New User”對(duì)話框中填寫賬號(hào)密碼,如圖所示:

可以看到Users文件夾下面有了一個(gè)用戶:

記得將Repositories倉(cāng)庫(kù)的屬性修改一下,因?yàn)樗J(rèn)的屬性是Everyone Read/Write,意思是任何人都可以對(duì)該庫(kù)中的內(nèi)容進(jìn)行讀寫,現(xiàn)在我們要將其修改成Everyone No Access,然后再自己添加用戶,給予用戶讀或?qū)懙哪芰,右鍵單擊“Repositories”,選擇“Properties”:

選中“Everyone”,然后勾選“No Access”:

現(xiàn)在開(kāi)始為TestSvn添加一個(gè)用戶,也就是剛剛添加的賬號(hào):zhengshuo,右鍵單擊“TestSvn”,選擇“Properties...”:

單擊“Add...”,選擇Users下的zhengshuo,單擊OK

這樣用戶zhengshuo就被添加到TestSvn項(xiàng)目中(即目前只有zhengshuo才有對(duì)TestSvn的讀寫權(quán)利):

五、安裝SVN客戶端軟件
雙擊如下安裝包:

單擊“Next”

選擇“I accept...”,單擊“Next”

選擇安裝目錄,單擊“Next”:

開(kāi)始Install:

Wait...

安裝完畢!

六、從SVN服務(wù)器簽出工程代碼
在任意一個(gè)位置建立一個(gè)文件夾TestSvn,比如說(shuō)D盤,右鍵單擊該文件夾,選擇“SVN Checkout...”

填寫好“URL of Repository”,格式是http://你電腦的IP地址:8080/svn/TestSvn,端口號(hào)是之前設(shè)置好的8080,IP地址填寫你當(dāng)前電腦的IP地址,然后單擊OK:

SVN會(huì)提示輸入賬號(hào)密碼進(jìn)行驗(yàn)證,因?yàn)閦hengshuo這個(gè)賬號(hào)在服務(wù)器中已經(jīng)添加,所以可以用該賬號(hào)進(jìn)行登錄:

驗(yàn)證成功后,會(huì)提示“Checkout Finished!”:

七、向SVN服務(wù)器簽入工程代碼
第一次簽出會(huì)獲得當(dāng)前項(xiàng)目TestSvn中的目錄結(jié)構(gòu),即branches,tags和trunk:

我們的代碼要放在trunk(主干)文件夾中,代碼如下:


右鍵單擊TestSvn文件夾,選擇“SVN Commit...”

填寫好上傳理由Message,單擊OK

提示“Commit Finished!”

八、后記
本文講述的內(nèi)容雖然較為簡(jiǎn)單,但是,它卻給了初學(xué)者一個(gè)最佳的切入點(diǎn),讓初學(xué)者能夠在最短的時(shí)間內(nèi),對(duì)SVN源代碼服務(wù)器的搭建和初步使用有一個(gè)通盤的了解。
通過(guò)對(duì)SVN源碼服務(wù)器的搭建,也讓我明白了軟件代碼版本管理的重要性,正所謂君子善假于物也,我們作為一個(gè)合格的軟件工程師,要善于合理利用身邊一切可以利用的資源,來(lái)優(yōu)化我們的工作環(huán)境,提高工作效率,為公司為自己寫出Bug較少的完美軟件。(全文完)