Subversion和TortoiseSVN在Windows系统下的安装
V
1、软件下载
l 下载Subversion服务器程序。
到
官方网站下载二进制安装文件,来到
二进制包下载部分,找到 Windows NT, 2000, XP and 2003部分,然后选择"
this directory,可以下载
svn-1.3.2-setup.exe。
"
l 下载Subversion的Windows客户端TortoiseSVN及中文汉化软件
TortoiseSVN是扩展Windows Shell的一套工具,可以看作Windows资源管理器的插件,安装之后Windows就可以识别Subversion的工作目录。官方网站是
TortoiseSVN,下载方式和前面的svn服务器类似,在中,下载
简体中文语言包。
LanguagePack-1.3.5.6804-win32-zh_CN.exe
Download页面的我们选择Official version for Win2k/XP or higher的版本,然后在sourceforge的
下载页面选择目前的最高稳定版本的安装文件TortoiseSVN-1.3.5.6804-svn-1.3.2.msi,还可以在sourceforge的
语言下载页面
2.服务器和客户端安装
l 服务器安装,直接运行
svn-1.2.3-setup.exe,根据提示安装即可,这样我们就有了一套服务器可以运行的环境。
l 安装TortoiseSVN,同样直接运行TortoiseSVN-1.3.5.6804-svn-1.3.2.msi按照提示安装即可,不过最后完成后会提示是否重启,其实重启只是使svn工作拷贝在windows中的特殊样式生效,与所有的实际功能无关,这里为了立刻看到好的效果,还是重新启动机器。
l 安装TortoiseSVN简体中文语言包。
3.建立版本库(Repository)
运行Subversion服务器需要首先要建立一个版本库(Repository),可以看作服务器上存放数据的数据库,在安装了Subversion服务器之后,可以直接运行,如: svnadmin create E:/SVN/repository,就会在目录E:/SVN/repository下创建一个版本库。
我们也可以使用TortoiseSVN图形化的完成这一步:在目录E:/svn/repository下"右键->TortoiseSVN->在此创建文件库, 然后可以选择版本库模式, 这里使用默认即可, 然后就创建了一系列目录和文件。
4.Subversion服务器的搭建
在Apache中配置使用SVN--For Windows
版本:Apache服务器采用2.0.59版本,
SVN采用1.3.2版本 !!
注意1.3.2版本不能和Apache2.2版本集成
安装配置过程如下:
安装要点记录如下:
0 安装Apache2.0至D:/Apache2。如果在安装SVN之间已经安装Apache2.0,步骤1、2、3可以省略。
1 复制%SVN_HOME%/bin/libdb42.dll、libeay32.dll、以及 ssleay32.dll到%APACHE_HOME%/bin
2 复制%SVN_HOME%/bin/*.so到%APACHE_HOME%/modules
3 修改%APACHE_HOME%/conf/httpd.conf,增加或修改:
修改Apache的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
|
4 在<VirtualHost>中增加/svn的<Location>
<Location /svn>
DAV svn
SVNPath E:/SVN/repository
</Location>
|
6 访问控制。此处采用文件方式,首先建立一个保存密码的文件
利用 apache 自带的 htpasswd 生成可访问用户的列表文件,这个文件中包含了用户名及其 MD5 之后的密码:(在cmd中,既默认apache路径C:/Apache Group/Apache2/bin执行该命令htpasswd -cm E:/SVN/users/svn-auth-file user1)
# htpasswd -cm E:/SVN/users/svn-auth-file user1
New password: *****
Re-type new password: *****
Adding password for user user1
|
如果还需要添加新的用户,继续使用
# htpasswd -m E:/SVN/users/svn-auth-file user2
|
注意,这一次不再使用 -c 参数,这个参数是用来新建文件的,所以第二个用户开始就不需要这个参数了,否则会重新创建文件,把第一个用户给去掉了。
接下来做一个简单的权限配置,举个简单的例子。具体权限视工程而制定。我们假设任何人都可以有读的权限,但只有 members 开发成员可以写trunk中的内容,这需要创建一个访问控制文件,假设为 E:/svn/users /svn-access-file。文件内容大概如下:
[groups] // 定义组
members = user1, user3, user2
[svn:/]
* = r // 任何人都可以读
[svn:/trunk]
member = rw // trunk 的权限只有members组成员可以读写
* = // 使其他人没有读写权限
//@members =rw
|
在httpd.conf中的/svn处增加权限控制部分:
<Location /svn>
DAV svn
SVNPath E:/SVN/repository
AuthType Basic
AuthName "Subversion repository"
AuthUserFile E:/SVN/users/svn-auth-file
AuthzSVNAccessFile E:/svn/users /svn-access-file
Require valid-user
</Location>
|
文件svn-access-file例子1如下:
[groups]
tests = hmf,zym,yj
admins = admin
[svn:/]
* = r
admin =rw
[svn:/test]
@tests = rw
* =
编写的svn-access-file文件例子2如下:
[groups]
admin = paleswd, admin
guest = guest, rsgs
pro = project
swd =swd, @pal
pal = Paleswd
# Default access rule for ALL repositories
# Everyone can read, admins can write
[/]
* = r
@admin = rw
[Repository:/Project-1]
@pro = rw
[Repository:/Paleswd]
@pal = rw
[Paleswd:/]
@pal = rw
[Paleswd:/Paleswd 2006-08-23]
@swd =rw
[Guest:/]
@guest = rw
@swd =rw
[Project:/]
@pro = rw
◎◎◎◎特别提示:
组成员居然还可以相互引用
注意:对某一个文档库下的文件夹施行访问控制时该文件夹的路径后不能跟"/"
比如要对Repository版本库中根目录下的Paleswd文件夹实行控制,路径要写成:[Repository:/Paleswd],而不能为:[Repository:/Paleswd/]
组成员居然还可以相互引用
注意对某一个文档库下的文件夹施行访问控制时该文件夹的路径后不能跟"/"
比如要对Repository版本库中根目录下的Paleswd文件夹实行控制,路径要写成:[Repository:/Paleswd],而不能为:[Repository:/Paleswd/]
可以支持带有空格路的径
经过测试,发现subversion是可以很好地控制中文目录的权限的。
方法很简单,就是将你的权限控制文件的格式转换为UTF-8格式,
将权限文件改成UTF-8格式我使用的是UltraEdit的菜单"ASCII to UTF-8 (Unicode Editing)"。
注:SVN版本库根目录下有Paleswd、Repository、Guest、Project几个版本库
※※※注意在编写svn-access-file文件时,如果要使用SVNPath功能时在Location设置中最后一定要加上/,
应该是<Location /svn/>而不是<Location /svn>,否则可能不能访问的,将出现如下错误:
Forbidden
You don't have permission to access /svn/ on this server.
--------------------------------------------------------------------------------
Apache/2.0.59 (Win32) SVN/1.3.2 DAV/2 Server at localhost Port 80
不使用svn-access-file文件配置时写成<Location /svn>不会出现该问题!切记!!!
另外必须指定svn-auth-file和svn-access-file文件的路径