posts - 49,comments - 97,trackbacks - 0

          原文出處:http://blog.163.com/air-blue55/blog/static/9708657020105612454398/


          有兩種方案:

          * VisualSVN Server,安裝更簡(jiǎn)單、更直觀:http://www.visualsvn.com/server/download/

          傳統(tǒng)的Subversion 服務(wù)器程序:
          一、準(zhǔn)備工作

          1、獲取 Subversion 服務(wù)器程序

          到官方網(wǎng)站(http://subversion.tigris.org/)下載最新的服務(wù)器安裝程序。目前最新的是1.5版本,具體下載地址在:http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100&expandFolder=8100&folderID=91


          2、獲取 TortoiseSVN 客戶端程序

          從官方網(wǎng)站 http://tortoisesvn.net/downloads 獲取最新的 TortoiseSVN 。TortoiseSVN 是一個(gè)客戶端程序,用來(lái)與 subvers 服務(wù)器端通訊。Subversion 自帶一個(gè)客戶端程序 svn.exe ,但 TortoiseSVN 更好操作,提高效率。


          二、安裝服務(wù)器端和客戶端

          安裝 Subversion(以下簡(jiǎn)稱SVN)的服務(wù)器端和客戶端。下載下來(lái)的服務(wù)器端是個(gè) zip 壓縮包,直接解壓縮即可,比如我解壓到E:\subversion 。客戶端安裝文件是個(gè) exe 可執(zhí)行文件,直接運(yùn)行按提示安裝即可,客戶端安裝完成后提示重啟。


          三、建立版本庫(kù)(Repository)

          運(yùn)行Subversion服務(wù)器需要首先要建立一個(gè)版本庫(kù)(Repository)。版本庫(kù)可以看作是服務(wù)器上集中存放和管理數(shù)據(jù)的地方。

          開(kāi)始建立版本庫(kù)。首先建立 e:\svn 空文件夾作為所有版本庫(kù)的根目錄。然后,進(jìn)入命令行并切換到subversion的bin目錄。輸入如下命令:

          svnadmin create E:\svn\repos1

          此命令在 E:\svn 下建立一個(gè)版本庫(kù) repos1 。repos1 下面會(huì)自動(dòng)生成一些文件夾和文件。

          我們也可以使用 TortoiseSVN 圖形化的完成這一步:

          先建立空目錄 E:\svn\repos1 ,注意一定是要空的。然后在 repos1 文件夾上“右鍵->TortoiseSVN->Create Repository here...”,然后可以選擇版本庫(kù)模式,這里使用默認(rèn)的FSFS即可,然后就創(chuàng)建了一系列文件夾和文件,同命令行建立的一樣。



          四、運(yùn)行獨(dú)立服務(wù)器

          此時(shí) subversion 服務(wù)還沒(méi)有開(kāi)始,只是通過(guò)它的命令建立了版本庫(kù)。繼續(xù)在剛才的命令窗口輸入:

          svnserve.exe --daemon

          svnserve 將會(huì)在端口 3690 等待請(qǐng)求,--daemon(兩個(gè)短橫線)選項(xiàng)告訴 svnserve 以守護(hù)進(jìn)程方式運(yùn)行,這樣在手動(dòng)終止之前不會(huì)退出。注意不要關(guān)閉命令行窗口,關(guān)閉窗口會(huì)把 svnserve 停止。

          為了驗(yàn)證svnserve正常工作,使用TortoiseSVN -> Repo-browser 來(lái)查看版本庫(kù)。在彈出的 URL 對(duì)話框中輸入:

          svn://localhost/svn/repos1

          點(diǎn) OK 按鈕后就可以看見(jiàn) repos1 版本庫(kù)的目錄樹(shù)結(jié)構(gòu)了,只不過(guò)這時(shí) repos1 是個(gè)空庫(kù)。

          你也可以使用--root選項(xiàng)設(shè)置根位置來(lái)限制服務(wù)器的訪問(wèn)目錄,從而增加安全性和節(jié)約輸入svnserve URL的時(shí)間:

          svnserve.exe --daemon --root drive:\path\to\repository

          以前面的測(cè)試作為例,svnserve 將會(huì)運(yùn)行為:
          eg:
          svnserve.exe --daemon --root e:\svn

          然后TortoiseSVN中的版本庫(kù)瀏覽器URL縮減為:

          svn://localhost/repos1

           

           

          ==svn開(kāi)機(jī)自啟動(dòng)=====================

          創(chuàng)建autoRunSVN.bat文件,內(nèi)容是:

           

          Cpp代碼

          sc create MySVNServer binpath= "\"C:\Program Files\Subversion\svnserve\svnserve\" --service -r H:\homerepos" displayname= "SVNService" depend= Tcpip start= auto  

          pause 

          sc create MySVNServer binpath= "\"J:\java\Subversion\bin\svnserve.exe" --service -r \"G:\svn repository\"" displayname= "SVNService" depend= Tcpip start= auto

          pause

           注意之處:

          (1)sc是windows自帶的服務(wù)配置程序,MySVNServer 是服務(wù)的名稱,似乎沒(méi)什么用。

           

          (2)參數(shù)binPath表示svnserve可執(zhí)行文件的安裝路徑,由于路徑中的"Program Files"帶有空格,因此整個(gè)路徑需要用雙引號(hào)引起來(lái)。而雙引號(hào)本身是個(gè)特殊字符,需要進(jìn)行轉(zhuǎn)義,因此在路徑前后的兩個(gè)雙引號(hào)都需要寫(xiě)成\" 。

          (3)--service參數(shù)表示以windows服務(wù)的形式運(yùn)行,--r指明svn repository的位置,service參數(shù)與r參數(shù)都作為binPath的一部分,因此與svnserve.exe的路徑一起被包含在一對(duì)雙引號(hào)當(dāng)中,而這對(duì)雙引號(hào)不需要進(jìn)行轉(zhuǎn)義。

           

          (4)displayname表示在windows服務(wù)列表中顯示的名字, depend =Tcpip 表示svnserve服務(wù)的運(yùn)行需要tcpip服務(wù),start=auto表示開(kāi)機(jī)后自動(dòng)運(yùn)行。安裝服務(wù)后,svnserve要等下次開(kāi)機(jī)時(shí)才會(huì)自動(dòng)運(yùn)行。 (5)binPath的等號(hào)前面無(wú)空格,等號(hào)后面有空格 displayname depend start也都一樣

          service前面是--,不是- ,而r前面是-

          (6)若要卸載svn服務(wù),則執(zhí)行 sc delete svnserve 即可。 

           

          (7)從“sc”到“auto”是在同一個(gè)命令sc,必須寫(xiě)在同一行。

           

                創(chuàng)建成功后,可以在運(yùn)行中鍵入service.msc察看系統(tǒng)服務(wù),找到SVNService項(xiàng),查看這項(xiàng)服務(wù)的屬性,可以使用Windows提供的界面操作SVNService服務(wù)了。

           

          P.S. 經(jīng)本人實(shí)驗(yàn),以上的SVN開(kāi)機(jī)自啟動(dòng)方法一直無(wú)法實(shí)現(xiàn),由于不會(huì)寫(xiě)批處理語(yǔ)句,也不知道是哪里錯(cuò),但網(wǎng)上很多地方都是用這種方法去實(shí)現(xiàn)  開(kāi)機(jī)自啟動(dòng)。最后,只能重新找了一種新方法,雖然無(wú)法開(kāi)機(jī)自啟動(dòng),但可以較方便實(shí)現(xiàn)多個(gè)服務(wù)進(jìn)程和管理多個(gè)文件夾,請(qǐng)各位自行選擇。

          創(chuàng)建SVNService.bat文件,內(nèi)容如下(尊重作者版權(quán),請(qǐng)勿刪除作者信息):

           

          @ECHO OFF
          ::======================================================================
          ::作者     : Zealic
          ::版本     : 1.05
          ::功能     : 通過(guò)簡(jiǎn)便快捷的方式安裝 Subversion.
          ::最后更新 : 2007-12-28
          ::======================================================================
          ::初始化環(huán)境
          ::======================================================================

           

          ECHO *** 安裝 Subversion 服務(wù) ***

          ::======================================================================
          ::======================================================================
          ::創(chuàng)建服務(wù)
          ::======================================================================
          ECHO +++ 創(chuàng)建資源庫(kù)服務(wù) +++
          ECHO 創(chuàng)建系統(tǒng)服務(wù),這需要輸入一些信息...

          :INPUT_SVC_NAME
          SET /P svc_name=請(qǐng)輸入服務(wù)名     : 
          ::服務(wù)名不能為空值
          if "%svc_name%" == "" (
            ECHO 服務(wù)名不能為空,請(qǐng)重新輸入。
            GOTO INPUT_SVC_NAME
          )
          ::查詢服務(wù)是否存在,通過(guò)查找輸出是否存在錯(cuò)誤,"1060:"是發(fā)生錯(cuò)誤是時(shí)輸出的錯(cuò)誤代碼。
          SC QUERY "%svc_name%" | find "1060:" >> NUL
          IF %errorlevel% == 1 (
            ECHO 服務(wù) "%svc_name%" 已經(jīng)存在!請(qǐng)重新輸入服務(wù)名。
            GOTO INPUT_SVC_NAME
          )
          ECHO.

          ::輸入資源庫(kù)信息
          :INPUT_REPOS
          SET /P    repos=請(qǐng)輸入資源庫(kù)路徑 : 
          ECHO.

          ::創(chuàng)建服務(wù)
          ECHO 您使用以下信息創(chuàng)建 Subversion 服務(wù) : 
          ECHO 服務(wù)名稱   : "%svc_name%"
          ECHO 資源庫(kù)路徑 : "%repos%"
          ECHO 正在創(chuàng)建服務(wù)...
          SC create %svc_name% binPath= "\"E:\Subversion\bin\svnserve.exe\" --service -r \"%repos%\"" depend= Tcpip start= auto| find "1060:" >> NUL
          ECHO.
          IF %errorlevel% == 0 GOTO SC_ERROR
          ECHO --- 創(chuàng)建服務(wù)成功! ---
          ECHO.
          ECHO.

          ::======================================================================
          ::生成操作批處理文件
          ::======================================================================
          ECHO +++ 生成服務(wù)操作批處理 +++
          ECHO 服務(wù)操作批處理文件可以幫助您快速操作服務(wù)。
          SET bat_delete=DELETE_%svc_name%.BAT
          SET bat_start=START_%svc_name%.BAT
          SET bat_stop=STOP_%svc_name%.BAT
          ECHO 生成刪除服務(wù)批處理 "%bat_delete%" ...
          ::bat_delete
          ECHO @ECHO OFF> %bat_delete%
          ECHO NET STOP %svc_name%>> %bat_delete%
          ECHO SC delete %svc_name%>> %bat_delete%
          ECHO DEL %bat_start%>> %bat_delete%
          ECHO DEL %bat_stop%>> %bat_delete%
          ECHO DEL %bat_delete%>> %bat_delete%
          ECHO PAUSE>> %bat_delete%
          ::bat_start
          ECHO 生成運(yùn)行服務(wù)批處理 "%bat_start%" ...
          ECHO @ECHO OFF> %bat_start%
          ECHO NET START %svc_name%>> %bat_start%
          ECHO PAUSE>> %bat_start%
          ::bat_stop
          ECHO 生成停止服務(wù)批處理 "%bat_stop%" ...
          ECHO @ECHO OFF> %bat_stop%
          ECHO NET STOP %svc_name%>> %bat_stop%
          ECHO PAUSE>> %bat_stop%
          ECHO.
          ECHO --- 生成服務(wù)操作批處理成功! ---
          ECHO.
          ECHO.

          ::======================================================================
          ::Finish
          ::======================================================================
          ECHO ### 所有操作成功! ###
          GOTO END

          ::======================================================================
          ::錯(cuò)誤段
          ::======================================================================
          :ENV_ERROR
          ECHO --- 設(shè)置環(huán)境變量失敗! ---
          GOTO END

          :SC_ERROR
          ECHO --- 創(chuàng)建服務(wù)失敗! ---
          GOTO END

          :SC_INV_PORT
          ECHO 無(wú)效的端口號(hào),請(qǐng)重新輸入。
          GOTO INPUT_SVC_PORT

          :END
          PAUSE

          其中SC create %svc_name% binPath= "\"E:\Subversion\bin\svnserve.exe\" --service -r \"%repos%\"" depend= Tcpip start= auto| find "1060:" >> NUL需要將binpath改為svnserve.exe所在路徑,之后就可以運(yùn)行服務(wù)了。

           

          五、配置用戶和權(quán)限

          用文本編輯器打開(kāi)E:\svn\repos1\conf目錄,修改svnserve.conf

          將:

          # password-db = passwd

          改為:

          password-db = passwd

          即去掉前面的 # 注釋符,注意前面不能有空格。

          然后修改同目錄的passwd文件,增加一個(gè)帳號(hào):

          將:

          [users]
          # harry = harryssecret
          # sally = sallyssecret

          增加帳號(hào):

          [users]
          #harry = harryssecret
          #sally = sallyssecret
          test = test


          六、初始化導(dǎo)入

          下面就是將我們的數(shù)據(jù)(項(xiàng)目)導(dǎo)入到這個(gè)版本庫(kù),以后就由版本庫(kù)管理我們的數(shù)據(jù)。我們的任何改動(dòng)都回被版本庫(kù)記錄下來(lái),甚至我們自己丟失、改錯(cuò)數(shù)據(jù)時(shí)版本庫(kù)也能幫我們找回?cái)?shù)據(jù)。

          比如,我在 d:\wwwroot 下有個(gè) guestbook 文件夾,里面存放的是我編寫(xiě)的留言簿程序。在此文件夾上“右鍵 -> TortoiseSVN -> Import...” ,在彈出對(duì)話框的“URL of repository”輸入“svn://localhost/repos1/guestbook”。在“Import message”輸入“導(dǎo)入整個(gè)留言簿”作為注釋。
          點(diǎn) OK 后要求輸入帳號(hào)。我們?cè)谟脩裘兔艽a處都輸入 test 。完成后 guestbook 中的內(nèi)容全部導(dǎo)入到了 svn://localhost/svn/repos1/guestbook 。

          我們看到在 e:\svn\repos1 沒(méi)有任何變化,連個(gè) guestbook 文件夾都沒(méi)有建立,唯一的變化就是e:\svn\repos1容量變大了。實(shí)際上我們?cè)磄uestbook中的內(nèi)容已經(jīng)導(dǎo)入 repos1 版本庫(kù)了,源 guestbook 文件夾可以刪除了。

          需要注意的是,這一步操作可以完全在另一臺(tái)安裝了 TortoiseSVN 的客戶機(jī)上進(jìn)行。例如運(yùn)行svnserve的主機(jī)的IP是133.96.121.22,則URL部分輸入的內(nèi)容就是“svn://133.96.121.22” 


          七、基本操作流程

          1、取出(check out)

          取出版本庫(kù)到一個(gè)工作拷貝:

          來(lái)到任意空目錄下,比如在f分區(qū)建立一個(gè)空文件夾 f:\work 。“右鍵 -> SVN Checkout”。在“URL of repository”中輸入“svn://localhost/svn/repos1/guestbook”,這樣我們就得到了一份 guestbook 中內(nèi)容的工作拷貝。

          2、存入(check in)/提交(commit)

          在工作拷貝中作出修改并提交:

          在 guestbook 工作拷貝中隨便打開(kāi)一個(gè)文件,作出修改,然后“右鍵 -> SVN Commit... ”。這樣我們就把修改提交到了版本庫(kù),版本庫(kù)根據(jù)情況存儲(chǔ)我們提交的數(shù)據(jù)。

          在修改過(guò)的文件上“右鍵 -> TortoiseSVN -> Show Log” ,可以看到對(duì)這個(gè)文件所有的提交。在不同的 revision 條目上“右鍵 -> Compare with working copy”,我們可以比較工作拷貝的文件和所選 revision 版本的區(qū)別。

          @import url(http://www.aygfsteel.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
          posted on 2011-07-12 22:19 閔毓 閱讀(1214) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 其他
          主站蜘蛛池模板: 华亭县| 兴文县| 永州市| 元氏县| 商城县| 临清市| 灌阳县| 扎赉特旗| 平乡县| 河间市| 庐江县| 九江市| 公安县| 垫江县| 深水埗区| 米易县| 临武县| 长垣县| 厦门市| 罗源县| 玉山县| 灵石县| 隆林| 通江县| 拜泉县| 朔州市| 盐亭县| 霞浦县| 碌曲县| 通江县| 乌拉特后旗| 南丰县| 仁怀市| 乐平市| 息烽县| 岗巴县| 海城市| 上虞市| 怀远县| 望城县| 榆林市|