使用高版本系統
測試使用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