svn--3

使用高版本系統

測試使用subversion1.7.8,下載Setup-Subversion-1.7.8.msi,運行安裝

1、安裝目錄d:\Program Files\Subversion\,完成安裝後,將D:\Program Files\Subversion\bin加入path環境變量

2、在d盤創建目錄D:\svn\repository,命令行運行svnadmin create d:\svn\repository,沒有什麼提示信息,表明創建版本庫成功。

3、啓動svn服務器,svnserve -d -r d:\svn\repository

4、測試導入項目,d盤建立test\client目錄,其下建立test.txt文件和child子目錄,執行svn import svn://localhost,出現

D:\test>svn import svn://localhost
svn: E205007: 無法使用外部編輯器獲得日誌信息;考慮設置環境變量 $SVN_EDITOR,或者
使用 --message (-m) 或 --file (-F) 選項
svn: E205007: 沒有設置 SVN_EDITOR,VISUAL 或 EDITOR 環境變量,運行時的配置參數中
也沒有 “editor-cmd” 選項

D:\test>

使用svn import svn://localhost -F c:\log.txt,提示認證失敗,找到D:\svn\repository\conf下的svnserve.conf,修改

anon-access =read
anon-access = write

但是依然提示驗證失敗,而在1.4.4版本時,修改就可用,說明在1.7.8後,匿名用戶無論如何是沒有寫權限的。查看一下1.7.8的svnserve.conf,有這樣一段註釋:
 The sample settings below are the defaults and specifythatanonymous usershave read-only access to the repository, while authenticated users have read and write access to the repository.

5、打開passwors-db = passwd,然後在passwd中添加hello/hello123用戶,再次執行import,這時提示輸入用戶及口令,正確輸入後導入成功。

6、subversion與apache2.2整合

安裝httpd-2.2.22-win32-x86-openssl-0.9.8t.msi

修改conf目錄下的httpd.conf   開啓
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so

增加
LoadModule dav_svn_module "D:\Program Files\Subversion\bin\mod_dav_svn.so"
LoadModule authz_svn_module "D:\Program Files\Subversion\bin\mod_authz_svn.so"

文件尾增加:

<Location /svn>
DAV svn
SVNPath d:/svn/repository
</Location>

保存重啓,成功,顯示apache/2.2.22(win32) SVN/1.7.8  DAV/2,集成成功,在IE中輸入http://localhost/svn。訪問成功

7、apache權限設置

在</Location>前增加

AuthType Basic 
AuthName "Subversion Repository" 
AuthUserFile E:/passwd/passwords
Require valid-user

然後使用htpasswd創建用戶

htpasswd -c d:\passwd\passwords hello
htpasswd d:\passwd\passwords world

重新啓動apache,再次訪問http://localhost/svn,彈出認證對話框,需要輸入用戶、密碼才能訪問

8、使用策略文件,對用戶,對項目進行訪問的精確控制:

首先修改SVNPath爲SVNParentPath,SVNParentPath表示以後建立版本庫的父目錄,這時在訪問http://localhost/svn,輸入用戶密碼也不能訪問了,按照前章的作法,在d:\svn\repository目錄下建立subsvn,使用svnadmin create d:\svn\repository\subsvn,系統提示:
C:\>svnadmin create d:\svn\repository\subsvn
svnadmin: E165002: “D:\svn\repository\subsvn” 是當前根爲 “D:\svn\repository” 的版本庫的子目錄,也就是說,在svn1.7裏面,不能在庫中再建子庫。

將SVNParentPath設爲d:\svn,在此目錄下建立subsvn,使用svnadmin create d:\svn\subsvn,創建庫成功,訪問http://localhost/svn/subsvn,可以成功。然後在d:\svn下建立svna目錄,在此目錄下在建立svn1目錄,使用svnadmin create d:\svn\svna\svn1,可以創建成功,但是,卻無法通過http://localhost/svn/svna/svn1來訪問。

總結:看來,在apache2.2+svn1.7版本下,版本庫只能創建在版本庫的父目錄底下,不能在庫中在建子庫,也不能在父目錄底下第二層及以下目錄建庫。

修改httpd.conf

<Location /svn>
DAV svn
SVNParentPath d:/svn
AuthzSVNAccessFile d:/passwd/policy    #增加一行
AuthType basic
AuthName "版本庫服務器"
AuthUserFile d:/passwd/passwords
Require valid-user
</Location>

policy內容:

[groups]
developers = hello,world
tester = microsoft
[helloworld:/]
@developers = rw
@tester = 
[subsvn:/]
@tester = rw
@developers = rw
[svnb:/]
@developers =
@tester = rw

可以實現不同用戶對不同項目的不同訪問權限。

9、還沒解決的問題

怎樣實現老版本的可以一下瀏覽多個子庫的功能,比如我輸入http://localhost/svn,就能顯示其下的所有子庫subsvn、helloworld、svnb等等。

我的一個apache2.2已經集成了php,同時假設了discuz站點,如何在集成svn


源自:http://blog.csdn.net/kaoa000/article/details/8559584

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章