SVN版本控制運(yùn)行的兩種模式詳解
本節(jié)繼續(xù)和大家一起學(xué)習(xí)一下SVN版本控制,本節(jié)主要學(xué)習(xí)SVN版本控制運(yùn)行的兩種模式,分別是以Stand-alone模式運(yùn)行和以Apache的模塊方式運(yùn)行兩種,歡迎大家一起來學(xué)習(xí)SVN版本控制運(yùn)行的兩種模式。首先我們來看一下什么是SVN。
SVN全名Subversion,即版本控制系統(tǒng)。SVN與CVS一樣,是一個跨平臺的軟件,支持大多數(shù)常見的操作系統(tǒng)。作為一個開源的版本控制系統(tǒng),Subversion管理著隨時間改變的數(shù)據(jù)。這些數(shù)據(jù)放置在一個中央資料檔案庫(repository)中。這個檔案庫很像一個普通的文件服務(wù)器,不過它會記住每一次文件的變動。這樣你就可以把檔案恢復(fù)到舊的版本,或是瀏覽文件的變動歷史。Subversion是一個通用的系統(tǒng),可用來管理任何類型的文件,其中包括了程序源碼。下面是SVN版本控制運(yùn)行的兩種模式中第一種模式介紹。
*************************
◆以Stand-alone模式運(yùn)行◆
*************************
6.從命令行啟動SVNServer:
1.cmd
2.svnserve-d-r%SVN_REPO_PARENT%
注意里面的參數(shù)r限定了瀏覽全部數(shù)據(jù)倉庫的根目錄。當(dāng)然如果覺得每次這樣啟動太麻煩的話,也有SVNServeice的包裝程序(http://dark.clansoft.dk/~mbn/svnservice/)。通過它能夠以windowsservice的方式運(yùn)行SVNServer(其本質(zhì)還是Stand-alone),運(yùn)行起來相對比較方便。
7.創(chuàng)建用戶數(shù)據(jù)庫(其實就是一個txt文本,就叫它”users.conf”吧,你也可以改名),保存到
%SVN_REPO_PARENT%"%PROJECT_NAME%"conf
目錄(那個conf子文件夾在創(chuàng)建數(shù)據(jù)倉庫時已被自動創(chuàng)建好),然后在這個文件內(nèi)添加需要的用戶名和密碼?;镜臉永缦拢?BR>1.[users]
2.your_username=your_password 注意這里密碼是明文存放的,所以也是這種方式的不足之處。
8.在”%SVN_REPO_PARENT%"%PROJECT_NAME%"conf”目錄下找到這個”svnserve.conf”文件,用任何文本編輯器打開,為剛才創(chuàng)建的那些用戶添加讀寫權(quán)限:
1.[general]
2.anon-access=none#匿名訪問權(quán)限
3.auth-access=write#認(rèn)證用戶的權(quán)限
4.password-db=users.conf#認(rèn)證用戶數(shù)據(jù)庫
5.realm=Anythingyouwant,butgenerallyweuse"%PROJECT_NAME%"#在用戶認(rèn)證界面上出現(xiàn)的提示語句里面的”users.conf”就是剛才在第7步創(chuàng)建的用戶文件。
9.最后,重啟SVNServer(什么?你不知道怎么重啟?關(guān)掉窗口再重新用命令行啟動啦;包裝成Service的話么就更加簡單了)現(xiàn)在已經(jīng)可以使用客戶端來連接SVNServer,進(jìn)行import等操作了。連接Server的URL應(yīng)該是類似這樣的:
1.svn://%SERVER_NAME_OR_IP%/%PROJECT_NAME%
具體步驟,請參閱第20步。下面是SVN版本控制運(yùn)行的兩種模式中第二種模式。
************************
◆以Apache的模塊方式運(yùn)行◆
************************
10.首先要了解的是SVN設(shè)計的時候只考慮了兼容Apache2.x,所以在Apache1.x下是不能正常工作的。
11.安裝Apache2
如果事先啟動了IIS之類的其他webserver,請先停止那些服務(wù)(端口被占用會導(dǎo)致Apache安裝失?。F渌麊栴}可以參考Apache的安裝手冊。這里假設(shè)安裝目錄為:%APACHE_HOME%
12.檢查Apache2的安裝是否成功
打開瀏覽器,訪問:http://localhost/,如果出現(xiàn)的是默認(rèn)的歡迎頁面,那就沒有問題了。否則請仔細(xì)檢查,重新安裝。
13.打開Apache的配置文件:“%APACHE_HOME%"conf"httpd.conf”,查找”LoadModule”這個關(guān)鍵字,找到導(dǎo)入模塊的區(qū)塊(section)反注釋掉下面這樣,
從而加載Subversion所需要的DAV模塊:
1.#LoadModuledav_modulemodules/mod_dav.so完成之后看起來應(yīng)該是這樣:
1.LoadModuledav_modulemodules/mod_dav.so
另外在這行下面再添加兩行(請注意把路徑中的”"”替換成”/”):
1.LoadModuledav_svn_module%SVN_HOME%/bin/mod_dav_svn.so
2.LoadModuleauthz_svn_module%SVN_HOME%/bin/mod_authz_svn.so
特別需要注意的是:由于模塊依賴關(guān)系,這三行的出現(xiàn)順序千萬不能顛倒。#p#
我們繼續(xù)看SVN版本控制在Apache的模塊方式運(yùn)行方法介紹。
14.再來配置一下”httpd.conf”的其他部分,告訴Apache2SVN的數(shù)據(jù)倉庫所在。(為避免不必要的麻煩,所有路徑中的”"”都請?zhí)鎿Q成”/”)
注意:
·按照下述配置,所有數(shù)據(jù)倉庫將共享密碼文件及權(quán)限文件
·如果需要為每個數(shù)據(jù)倉庫創(chuàng)建獨立的設(shè)置,請查閱SVN的文檔(”AuthorizationOption”章節(jié))
添加下述內(nèi)容:
- 1.<Location/svn>
- 2.
- 3.DAVsvn
- 4.SVNParentPath%SVN_REPO_PARENT%
- 6.#設(shè)置通過瀏覽器訪問Repository時的XML格式文件,可以省略
- 7.SVNIndexXSLT"/svnindex.xsl"
- 8.
- 9.#存取權(quán)限控制文件所在地
- 10.AuthzSVNAccessFile%SVN_REPO_PARENT%/AccessFile
- 11.
- 12.#先嘗試匿名操作,如有必要再轉(zhuǎn)向用戶認(rèn)證
- 13.SatisfyAny
- 14.Requirevalid-user
- 15.
- 16.#如何驗證用戶
- 17.AuthTypeBasic
- 18.AuthName"Anythingyouwant,butgenerallyweuse%PROJECT_NAME%"
- 19.AuthUserFile%SVN_REPO_PARENT%/passwd
- 20.
- 21.#輸出時調(diào)用Apache的Deflate模塊,必須有啟用此模塊才能這樣配,否則刪除此行
- 22.SetOutputFilterDEFLATE
- 23.
- 24.< span>Location>
這里涉及到兩個文件:“%SVN_REPO_PARENT%/AccessFile”及“%SVN_REPO_PARENT%/passwd”.并不一定非要放到”%SVN_REPO_PARENT%”目錄下,我圖方便而已。覺得不安全可以移到另外地方。這兩個文件里面具體內(nèi)容的設(shè)置請參考第16和17步。
15.保存”httpd.conf”并退出,這里Apache2的配置告一段落。
16.”%SVN_REPO_PARENT%/AccessFile”文件的內(nèi)容
1.[/]
2.*=r
3.user1=rw
4.user2=r
5.admin=rw
6.[%PROJECT_NAME%:/src/test]
7.user2=rw
其中:
·[/]指代所有數(shù)據(jù)倉庫的根目錄,匿名用戶默認(rèn)的權(quán)限為只讀。
·對于”user1″和”admin”,他們對所有數(shù)據(jù)倉庫都有讀寫權(quán)限。
·對于”user2″,它對所有數(shù)據(jù)倉庫僅有只讀權(quán)限。但是下方又額外指定了他對”%PROJECT_NAME%:/src/test”目錄具有讀寫權(quán)限。
·綜上,他對’test’目錄及其子目錄(自動繼承,除非特別指定)具有讀寫權(quán)限,其他則均為只讀權(quán)限。你可以根據(jù)需要來設(shè)定不同的權(quán)限,更詳細(xì)的說明還需要參考SVN文檔中的權(quán)限設(shè)置章節(jié)。
17.”%SVN_REPO_PARENT%/passwd”文件的內(nèi)容
這個文件是通過”%APACHE_HOME%"bin"htpasswd.exe”自動生成的:
1.cmd
2.cd/D%APACHE_HOME%"bin
3.#參數(shù)c僅在第一次運(yùn)行時使用,用來創(chuàng)建一個新文件
4.htpasswd–cm%SVN_REPO_PARENT%"passwduser1
5.#以后添加用戶可用此命令,參數(shù)m表明需要加密
6.htpasswd–m%SVN_REPO_PARENT%"passwduser2
此時用文本編輯器打開”%SVN_REPO_PARENT%/passwd”,可以看到里面內(nèi)容是類似這樣的:
1.admin:$apr1$HLWV7/..$upZwVGvge0sc28fEp7mGM0
2.user1:$apr1$8sbRo...$hNMdkTvO4t8POVmOkV3Vg.
3.user2:$apr1$ZXzcE/..$5Ir0V8VQQtNYTNnnOp.EU1
18.把SVN自帶的XSLT文件拷貝到網(wǎng)站根目錄,然后設(shè)置合理權(quán)限(windows平臺則不必考慮)
1.#這里假設(shè)你的網(wǎng)站根目錄是/var/www/html
2.mv/tmp/subversion-1.2.3/tools/xslt/svnindex*/var/www/html
3.chownapache:apache/var/www/html/svnindex*
4.chmod644/var/www/html/svnindex*
5.
6.#設(shè)置所有者和權(quán)限(將權(quán)限賦給apache運(yùn)行的用戶身份)
7.chown-Rapache:apache%SVN_REPO_PARENT%
8.chmod-R766%SVN_REPO_PARENT%
19.重啟Apache2服務(wù):
1.cmd
2.netstopApache2
3.netstartApache2
20.打開瀏覽器,訪問:http://%SERVER_NAME_OR_IP%/svn/
如果返回的頁面是”403Forbidden”,可能是由于Apache2默認(rèn)沒有打開目錄的瀏覽權(quán)限(OptionIndexes,參閱Apache2文檔),但這并不影響使用?,F(xiàn)在已經(jīng)可以用客戶端導(dǎo)入項目并開始使用了。具體步驟,請參閱第20步。本節(jié)關(guān)于SVN版本控制運(yùn)行的兩種模式介紹完畢。
【編輯推薦】