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