天天看点

SVN服务器安装与使用

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/,任何用户都没有任何访问权限