1、什么是SVN?
SVN全称为Subversion, 是一个开源的版本控制系統, 也就是说Subversion 管理着随时间改变的数据。这些数据放置在一个中央资料档案库 (repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。 许多人会把版本控制系統想像成某种 “时光机器”。
某些版本控制系統也是 SCM(software configuration management) 系统。 这些系統是特別设计来管理大量代码的, 而且具有许多专门针对软件开发的功能,像通俗易懂的程序语言, 或是提供编译软件的工作。 不过Subversion 并不是这样的系统; 它是一个通用的系统, 可用来管理任何类型的文件, 其中包括了程序源码。
版本控制是管理数据变更的一种技术。对于开发人员来说,它已经成为不可或缺的工具,因为他们经常修改软件代码,产生部分的变更,然后第二天再取消所有的变更。想象有一群程序员同时工作的情况你就能理解,为什么需要一个良好的系统来管理可能出现的混乱。
2、SVN服务器端安装与配置
2.1、安装Apache
本安装基于windows操作平台,因为要搭建此项目管理服务器,所以必须要先安装Apache服务器。
2.1.1、下载Apache
当前安装2.2.17版本:http://httpd.apache.org/download.cgi
2.1.2、安装
运行httpd-2.2.17-win32-x86-openssl-0.9.8o.msi设置系统信息,在Network Domain下填入您的域名(比如:workyee.com),在Server Name下填入您的服务器名称(比如:www.workyee.com,也就是主机名加上域名),在Administrator's Email Address下填入系统管理员的联系电子邮件地址(比如:[email protected]),如果你的服务器是本地或者没有DNS名称,请直接输入IP地 址。上述三条信息仅供参考,其中联系电子邮件地址会在当系统故障时提供给访问者(此三条信息也可在安装后进行修改,该文件位于Apache Group/Apache2/conf/httpd.conf文件)。下面有两个选择,图片上选择的是为系统所有用户安装,使用默认的80端口,并作为系统服务自动启动;另外一个是仅为当前用户安装,使用端口8080,手动启动(如发生安装失败情况可以打开Apache Group\Apache2\conf\httpd.conf,编辑文件的Listen 80为其他可用的端口,然后用CMD进入命令行模式进入你安装apache的目录/apache2/bin输入apache -k install和apache -k start)。一般选择如下图所示。按“Next”继续。
安装完成后浏览 http://localhost/ 若成功,可看到如下图apache欢迎页面。
2.2、安装SVN
2.2.1、下载SVN
在本实例中,选择下载svn-win32-1.6.6.zip 此版本,其他版本可以在此下载http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=11151&expandFolder=11151&folderID=91
2.2.2、安装
将svn-win32-1.6.6.zip压缩包解压,从svn- win32-1.6.6\bin 中将mod_authz_svn.so mod_dav_svn.so复制到Apache Group\Apache2\modules下,再将svn-win32-1.6.6\bin目录下的所有dll 文件全部复制到Apache Group\Apache2\bin文件夹下。
修改Apache Group\Apache2\conf\httpd.conf文件:
找到以下两行并删除注释(删除前面"#")
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so
在LoadModule部分的最后添加以下两行
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
重启apache看到下图状态栏显示Apache/2.0.63 (Win32) SVN/1.6.6 DAV/2 即表示安装成功。
2.3、配置SVN
2.3.1、建立版本库
首先建立一个用于存在SVN项目的版本库,本例中在D盘驱动器中建立目录D:\SvnRoot
cmd
d:
cd d:\svn-win32-1.6.6\bin
svnadmin create --fs-type fsfs D:/SvnRoot/s1
svnadmin create --fs-type fsfs D:/SvnRoot/s2
可通过如下命令建立版本库,当然如果你需要建立多个版本库只需将名称进行换名即可
3、配置单仓库的用户权限
再次打开Apache安装目录下conf目录中的httpd.conf文件,将光标移到问文件的最末端加入如下代码:
# 配置单仓库的用户权限
<Location /svn>
# 这里指定了仓库的访问路径,即http://localhost/svn
DAV svn
# 指定仓库在硬盘上的实际位置
SVNPath D:/SvnRoot/s1
# 权限验证
# 认证方式为基本方式
AuthType Basic
# 认证窗口的标题
AuthName "Subversion repositories"
# 认证用户配置文件实际位置
AuthUserFile D:/SvnRoot/passwords.auth
# 认证权限配置文件实际位置
AuthzSVNAccessFile "D:/SvnRoot/access.auth"
# 设定为需要进行认证
Require valid-user
</Location>
接下来我们创建认证所需的两个文件:用户文件和权限文件
到D:\svnroot下建立文件passwords.auth和access.auth(可以用记事本创建后修改文件名)
配置认证用户文件passwords.auth,内容如下:
admin:admin
test:test
配置认证权限文件access.auth
直接在D:\svnroot下建立access.auth文件即可,然后填入如下内容
[groups]
#开发用户组1
dev1 = admin
#开发用户组2
dev2 = test
[/]
@dev1 = r
@dev2 = r
4、配置多仓库的用户权限
# 配置多仓库的用户权限
<Location /svns>
# 这里指定了仓库的访问路径,即http://localhost/svns
DAV svn
# 这里将SVNPath修改为SVNParentPath,当前目录为父目录
# 仓库svn1和svn2在这个父目录下
# SVNListParentPath on
SVNParentPath D:/SvnRoot
# 权限验证
# 认证方式为基本方式
AuthType Basic
# 认证窗口的标题
AuthName "Subversion repositories"
# 认证用户配置文件实际位置
AuthUserFile D:/SvnRoot/passwords.auth
# 认证权限配置文件实际位置
AuthzSVNAccessFile "D:/SvnRoot/access.auth"
# 设定为需要进行认证
Require valid-user
</Location>
[s1:/]
@dev1 = r
@dev2 =
[s2:/]
@dev1 =
@dev2 = r
仓库1访问路径为http://localhost/svns/s1
仓库2访问路径为http://localhost/svns/s2
对父目录http://localhost/svn/,任何用户都没有任何访问权限