Subversion是一个自由,开源的版本控制系统。在Subversion的管理下,每一次文件的修改都会被记录在版本库中,可以方便的查看文件的修改历史,修改的一些信息,方便的恢复到修改前
<wbr></wbr>
的任意状态。
<wbr></wbr>
搭建环境:win XP SP3+ Apache2.2.2 + svn1.7.5
<wbr></wbr>
svn官网:http://subversion.apache.org/packages.html
http://subversion.apache.org/docs/下载说明文档
根据需要下载对应版本,以win32为例。
<wbr></wbr>
1. http://sourceforge.net/projects/win32svn/files/1.7.5/
<wbr></wbr>
<wbr></wbr>下载Setup-Subversion-1.7.5.msi安装svn服务器,svn可以单独运行,也可以集成Apache服务器。
<wbr></wbr>
<wbr></wbr>下载TortoiseSVN客户端,在win系统上,可以方便的与svn配合使用。
<wbr>TortoiseSVN</wbr>下载:http://tortoisesvn.net/downloads.html
<wbr></wbr>
客户端安装完成后,右键菜单:
首先创建版本库:
将svn的Subversion\bin所在目录添加到Path环境变量里面
svnadmin create F:\test
可以直接建立空文件夹,然后右键创建版本库
<wbr></wbr>
默认生成的目录结构
在conf更改默认配置
svnserve.conf
<wbr></wbr>
anon-access匿名用户的访问权限
auth-access认证用户的访问权限
<wbr></wbr>
值可以为
write可读写
read<wbr></wbr>只读
none拒绝访问
<wbr></wbr>
password-db = passwd配置用户信息
默认使用当前目录下的passwd文件保存,可以更改为其它路径
authz-db = authz配置用户权限
默认使用当前目录下的authz文件保存,可以更改为其它路径
realm = My First Repository版本库标示,默认为UUID
force-username-case = none是否忽略用户名的大小写默认为none
use-sasl = true是否启用Cyrus SASL验证库,默认值是false
<wbr></wbr>
min-encryption = 0
# max-encryption = 256
这些选项指定安全层SASL所需的强度
0表示不加密,1表示只检查完整性
值大于1。(例如:128表示128位有效密钥长度
###加密)。
passwd保存用户信息
admin = admin账号和密码为admin
开启svn服务,启动后dos框如果关闭,服务就停止。可以写入win服务
<wbr></wbr>
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
<wbr></wbr>
# [/foo/bar]
# harry = rw
# &joe = r
# * =
<wbr></wbr>
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
<wbr></wbr>
[groups]用户组
manager = admin,test
user = user
[/]<wbr></wbr>
@manager = rw
user = r
*=
@manager表示manager用户组下面的所有用户都有读写根目录下文件的权限
user = r表示user用户有只读权限
*=表示除了上述用户和拥护者外,其它人无任何权限
<wbr></wbr>
<wbr></wbr>
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
同上,配置目录下面文件的详细权限
<wbr></wbr>
svn + Apache集成
<wbr></wbr>
1.<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>Apache下载http://httpd.apache.org/download.cgi<wbr><wbr></wbr></wbr>
httpd-2.2.22-win32-x86-openssl-0.9.8t.msi本文下载版本
具体安装请度娘和谷哥
<wbr></wbr>
2.<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>配置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<wbr></wbr>
LoadModule authz_svn_module modules/mod_authz_svn.so
3.<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>配置虚拟路径
#/cncit<wbr></wbr>访问svn虚拟库名称,可以随意配置
<Location /cncit><wbr></wbr>
#引用远程访问模块#<wbr></wbr>
DAV svn<wbr></wbr>
# SVNPath项目版本库路径#<wbr></wbr>
SVNPath F:/cncit<wbr><wbr></wbr></wbr>
</Location>
4.<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>找到Subversion服务器安装目录
将\Subversion\bin目录下mod_dav_svn.so<wbr>mod_authz_svn.so</wbr>复制到
Apache2.2\modules目录下
然后重启Apache服务器
<wbr></wbr>
在浏览器输入对应地址,就可以访问了。
(apache默认监听端口为Listen 80,但端口可能被占用。修改为适合的端口)
<wbr></wbr>
以上配置所以匿名用户都可以访问并任意修改源代码
<wbr></wbr>
5.<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>添加http认证
基于http的认证,使用用户名和密码来验证一个用户。Apache提供了一个htpasswd工具来管理一个用户认证文件,这个文件包含用户名和加密后的密码,然后就可以控制用户的访问。htpasswd可以在Apache的bin安装目录下找到。
<wbr><wbr><wbr>Htpasswd</wbr></wbr></wbr>用法
D:\Apache2.2\bin>htpasswd
Usage:
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>htpasswd [-cmdpsD] passwordfile username</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>htpasswd -b[cmdpsD] passwordfile username password</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>htpasswd -n[mdps] username</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>htpasswd -nb[mdps] username password</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr>-c<wbr>Create a new file.</wbr></wbr>
<wbr>-n<wbr>Don't update file; display results on stdout.</wbr></wbr>
<wbr>-m<wbr>Force MD5 encryption of the password (default).</wbr></wbr>
<wbr>-d<wbr>Force CRYPT encryption of the password.</wbr></wbr>
<wbr>-p<wbr>Do not encrypt the password (plaintext).</wbr></wbr>
<wbr>-s<wbr>Force SHA encryption of the password.</wbr></wbr>
<wbr>-b<wbr>Use the password from the command line rather than prompting for it.</wbr></wbr>
<wbr>-D<wbr>Delete the specified user.</wbr></wbr>
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.
<wbr></wbr>
<wbr></wbr>
<wbr></wbr>
创建用户文件:
<wbr>D:\Apache2.2\bin>htpasswd -cb pswd zyq zyq</wbr>
Adding password for user zyq
D:\Apache2.2\bin>
<wbr></wbr>
创建一个pswd的验证文件,并添加一个zyq用户
<wbr></wbr>
D:\Apache2.2\bin>htpasswd -b pswd test test
Adding password for user test
D:\Apache2.2\bin>
添加用户一个新的用户
<wbr></wbr>
修改httpd.conf,在Location标签中加入如下内容:
AuthType Basic
AuthName "cncit"
AuthUserFile D:/Apache2.2/bin/pswd
Require valid-user
<wbr></wbr>
说明:
AuthType Basic:启用基本的验证,比如用户名/密码对。
AuthName "cncit":当一个认证对话框弹出时,出现在认证对话框中的信息。(最好用英文,TortoiseSVN不支持中文,安装语言包除外。)
AuthUserFile D:/Apache2.2/bin/pswd指定D:/Apache2.2/bin/pswd为用户文件,用来验证用户的用户名及密码。
Require valid-user:限定用户只有输入正确的用户名及密码后才能访问这个路径
配置完成的Location标签
<Location /cncit><wbr></wbr>
<wbr></wbr>
DAV svn<wbr></wbr>
<wbr></wbr>
SVNPath F:/cncit<wbr></wbr>
<wbr></wbr>
AuthType Basic
<wbr></wbr>
AuthName "cncit"
<wbr></wbr>
AuthUserFile D:/Apache2.2/bin/pswd
<wbr></wbr>
Require valid-user
<wbr></wbr>
</Location>
<wbr></wbr>
重启Apache服务,然后访问版本库,
<wbr></wbr>
输入配置的用户信息,就可以访问了.
<wbr></wbr>
6.<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>单个版本库和多个版本库的配置
a.单库配置
<wbr></wbr>
<Location /test>
DAV svn
SVNPath F:\test
</Location>
版本库对外的URL是:http://服务器IP/test/,所有的Subversion版本库在物理上位于F:\test目录。
<wbr></wbr>
b.多库配置
<wbr></wbr>
<wbr></wbr>
<Location /svn/>
DAV svn
SVNParentPath F:\svn
</Location>
<wbr></wbr>
SVNParentPath F:\svn表示F:\svn下的每个子目录都是一个版本库。可以通过http://服务器IP/svn/pro1/,http://服务器IP/svn/pro2/来访问不同的版本库
<wbr></wbr>
多个版本库使用统一的认证,禁止匿名用户访问
<Location /cncit><wbr><wbr></wbr></wbr>
DAV svn<wbr><wbr></wbr></wbr>
SVNParentPath F:\svn
AuthType Basic
AuthName "cncit"
AuthUserFile D:/Apache2.2/bin/pswd
Require valid-user <wbr></wbr>
</Location>
使用LimitExcept标签,标示匿名用户可以访问,只有认证用户有修改的权限
<Location /cncit><wbr><wbr></wbr></wbr>
DAV svn<wbr><wbr></wbr></wbr>
SVNParentPath F:\svn
AuthType Basic
AuthName "cncit"
<wbr></wbr>
AuthUserFile D:/Apache2.2/bin/pswd <wbr></wbr>
<LimitExcept GET PROPFIND OPTIONS REPORT>
require valid-user
</LimitExcept>
</Location> |