Subversion是一個自由,開源的版本控制系統。在Subversion的管理下,每一次文件的修改都會被記錄在版本庫中,可以方便的查看文件的修改歷史,修改的一些信息,方便的恢復到修改前
的任意狀態。
搭建環境:win XP SP3+ Apache2.2.2 + svn1.7.5
svn官網:http://subversion.apache.org/packages.html
http://subversion.apache.org/docs/ 下載說明文檔
根據需要下載對應版本,以win32爲例。
1. http://sourceforge.net/projects/win32svn/files/1.7.5/
下載 Setup-Subversion-1.7.5.msi 安裝svn服務器,svn可以單獨運行,也可以集成Apache服務器。
下載TortoiseSVN 客戶端,在win系統上,可以方便的與svn配合使用。
TortoiseSVN下載: http://tortoisesvn.net/downloads.html
客戶端安裝完成後,右鍵菜單:
首先創建版本庫:
將svn的 Subversion\bin所在目錄添加到 Path環境變量裏面
svnadmin create F:\test
可以直接建立空文件夾,然後右鍵創建版本庫
默認生成的目錄結構
在conf更改默認配置
svnserve.conf
anon-access 匿名用戶的訪問權限
auth-access 認證用戶的訪問權限
值可以爲
write 可讀寫
read 只讀
none 拒絕訪問
password-db = passwd 配置用戶信息
默認使用當前目錄下的passwd文件保存,可以更改爲其它路徑
authz-db = authz 配置用戶權限
默認使用當前目錄下的authz文件保存,可以更改爲其它路徑
realm = My First Repository 版本庫標示,默認爲UUID
force-username-case = none 是否忽略用戶名的大小寫 默認爲none
use-sasl = true 是否啓用Cyrus SASL驗證庫,默認值是false
min-encryption = 0
# max-encryption = 256
這些選項指定安全層SASL所需的強度
0表示不加密,1表示只檢查完整性
值大於1。(例如:128表示128位有效密鑰長度
###加密)。
passwd 保存用戶信息
admin = admin 賬號和密碼爲admin
開啓svn服務,啓動後dos框如果關閉,服務就停止。可以寫入win 服務
svnserve -d -r F:\test1
瀏覽版本庫,會出現上面認證框。輸入配置好的用戶如admin,會提示認證失敗。
還需要配置authz,添加對應的權限
默認的目錄結構
[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
# [/foo/bar]
# harry = rw
# &joe = r
# * =
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[groups] 用戶組
manager = admin,test
user = user
[/]
@manager = rw
user = r
*=
@manager表示 manager 用戶組下面的所有用戶都有讀寫根目錄下文件的權限
user = r 表示 user 用戶有隻讀權限
*= 表示除了上述用戶和擁護者外,其它人無任何權限
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
同上,配置目錄下面文件的詳細權限
svn + Apache 集成
1. Apache下載 http://httpd.apache.org/download.cgi
httpd-2.2.22-win32-x86-openssl-0.9.8t.msi 本文下載版本
具體安裝請度娘和谷哥
2. 配置httpd.conf
打開Apache的安裝目錄 Apache2.2\conf\httpd.conf 文件
去掉
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
這個兩個的#註釋
添加下面兩個
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
3. 配置虛擬路徑
#/cncit 訪問svn虛擬庫名稱,可以隨意配置
<Location /cncit>
#引用遠程訪問模塊#
DAV svn
# SVNPath項目版本庫路徑#
SVNPath F:/cncit
</Location>
4. 找到Subversion服務器安裝目錄
將 \Subversion\bin目錄下 mod_dav_svn.so mod_authz_svn.so 複製到
Apache2.2\modules 目錄下
然後重啓Apache 服務器
在瀏覽器輸入對應地址,就可以訪問了。
(apache 默認監聽端口爲Listen 80,但端口可能被佔用。修改爲適合的端口)
以上配置所以匿名用戶都可以訪問並任意修改源代碼
5. 添加http認證
基於http的認證,使用用戶名和密碼來驗證一個用戶。Apache提供了一個 htpasswd 工具來管理一個用戶認證文件,這個文件包含用戶名和加密後的密碼,然後就可以控制用戶的訪問。htpasswd 可以在 Apache 的bin 安裝目錄下找到。
Htpasswd 用法
D:\Apache2.2\bin>htpasswd
Usage:
htpasswd [-cmdpsD] passwordfile username
htpasswd -b[cmdpsD] passwordfile username password
htpasswd -n[mdps] username
htpasswd -nb[mdps] username password
-c Create a new file.
-n Don't update file; display results on stdout.
-m Force MD5 encryption of the password (default).
-d Force CRYPT encryption of the password.
-p Do not encrypt the password (plaintext).
-s Force SHA encryption of the password.
-b Use the password from the command line rather than prompting for it.
-D Delete the specified user.
On other systems than Windows, NetWare and TPF the '-p' flag will probably not work.
The SHA algorithm does not use a salt and is less secure than the MD5 algorithm.
創建用戶文件:
D:\Apache2.2\bin>htpasswd -cb pswd zyq zyq
Adding password for user zyq
D:\Apache2.2\bin>
創建一個pswd的驗證文件,並添加一個zyq用戶
D:\Apache2.2\bin>htpasswd -b pswd test test
Adding password for user test
D:\Apache2.2\bin>
添加用戶一個新的用戶
修改 httpd.conf,在 Location 標籤中加入如下內容:
AuthType Basic
AuthName "cncit"
AuthUserFile D:/Apache2.2/bin/pswd
Require valid-user
說明:
AuthType Basic:啓用基本的驗證,比如用戶名/密碼對。
AuthName "cncit":當一個認證對話框彈出時,出現在認證對話框中的信息。(最好用英文,TortoiseSVN 不支持中文,安裝語言包除外。)
AuthUserFile D:/Apache2.2/bin/pswd指定D:/Apache2.2/bin/pswd爲用戶文件,用來驗證用戶的用戶名及密碼。
Require valid-user:限定用戶只有輸入正確的用戶名及密碼後才能訪問這個路徑
配置完成的 Location標籤
<Location /cncit>
DAV svn
SVNPath F:/cncit
AuthType Basic
AuthName "cncit"
AuthUserFile D:/Apache2.2/bin/pswd
Require valid-user
</Location>
重啓Apache服務,然後訪問版本庫,
輸入配置的用戶信息,就可以訪問了.
6. 單個版本庫和多個版本庫的配置
a.單庫配置
<Location /test>
DAV svn
SVNPath F:\test
</Location>
版本庫對外的URL是:http://服務器IP/test/ ,所有的Subversion版本庫在物理上位於F:\test目錄。
b.多庫配置
<Location /svn/>
DAV svn
SVNParentPath F:\svn
</Location>
SVNParentPath F:\svn 表示 F:\svn 下的每個子目錄都是一個版本庫。可以通過 http://服務器IP/svn/pro1/,http://服務器IP/svn/pro2/ 來訪問不同的版本庫
多個版本庫使用統一的認證,禁止匿名用戶訪問
<Location /cncit>
DAV svn
SVNParentPath F:\svn
AuthType Basic
AuthName "cncit"
AuthUserFile D:/Apache2.2/bin/pswd
Require valid-user
</Location>
使用LimitExcept標籤,標示匿名用戶可以訪問,只有認證用戶有修改的權限
<Location /cncit>
DAV svn
SVNParentPath F:\svn
AuthType Basic
AuthName "cncit"
AuthUserFile D:/Apache2.2/bin/pswd
<LimitExcept GET PROPFIND OPTIONS REPORT>
require valid-user
</LimitExcept>
</Location>