Subversion有两种运行方式,一种是基于Apache Http Server,另外一种是Subversion Standalone Server。

基于Apache Http Server的Subversion 的好处:
A.能使用WebDAV协议。
B.能使用浏览器作为客户端工具浏览源码仓库。
C.可以很容易的支持到SSPI(Windows域认证)和LDAP,这些都是Apache本身就支持的。
D.能得到比较完善的Apache安全认证系统,比如SSL加密连接。

我采用的是 Subversion Standalone Server 方式。

以前我使用的基于Apache Http Server的过程中,遇到一些问题。提交的代码,会导致锁定,这很让人头疼。所以,今天我要换一种方式。

OK!进入安装配置。

一、安装subversion
执行如下 shell 命令进行安装:

 yum -y install subversion

如果,你不确定自己系统中是否已经安装过svn,执行如下 shell 命令检测:

rpm -qa | grep subversion

如果输出类似如下结果,则说明已经安装:

subversion-1.6.11-7.el6.x86_64

安装之后,使用如下命令可以查看版本信息:

svn --version

二、建立代码仓库
1、常规情况下,我们一个仓库里面会有多少个项目。所以,第一步得创建所有项目的仓库中心,如下命令:

mkdir /opt/svn/

2、现在假定我们有一个项目叫 svntest ,现在我们为这个项目在仓库中心中分配一个仓库。如下命令:

svnadmin create /opt/svn/svntest/

三、修改配置文件
1、进入 svntest 项目仓库配置目录中,如下命令:

cd /opt/svn/svntest/conf/

2、查看配置目录中有哪些文件,如下命令:

ll

结果如下:

-rw-r--r--1 root root 1105101111:55 authz
-rw-r--r--1 root root  326101111:55 passwd
-rw-r--r--1 root root 2271101111:54 svnserve.conf

3、执行如下命令修改svnserve.conf:

vi svnserve.conf

找到以下的内容,并在行首注释符号#删掉。

[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz

4、为 svntest 项目增加svn用户,并且赋予权限值:

vi authz

在文件中添加如下代码:

[svntest:/]
svn001 = rw

代码的意思是:为 svntest 项目添加一个svn001的用户,并且,这个用户对于 svntest 项目拥有读写权限。

关于方框号里面的写法有以下几种:
[/],表示根目录及以下,根目录是svnserve启动时指定的,我们指定为/opt/svntest,[/]就是表示对全部版本库设置权限。
[svntest:/] 表示对版本库svntest设置权限
[svntest:/abc] 表示对版本库svntest中的abc项目设置权限
[svntest:/abc/aaa] 表示对版本库svntest中的abc项目的aaa目录设置权限

5、给用户分配密码,执行如下命令:

vi passwd

输入如下内容:

svn001 =123456

四、启动svn服务和测试

1、启动svn服务,并指定 svn 的根目录:

svnserve -d -r /opt/svn/

2、查看svn服务是否正常启动,执行如下命令:

netstat -tunlp | grep svn

会输出如下结果:

tcp  000.0.0.0:36900.0.0.0:*  LISTEN  1737/svnserve

顺便提一下,svn的默认端口是3690。

3、在windows系统上测试是否成功:

1)首先保证你的系统中已经安装了 subversion 客户端程序。如果没有安装马上下载安装,并重启windows系统。

2)在windows任意的目录中,创建一个文件夹,文件夹的名字任意,最好是英文名。如我的:svn_test。

3)右键点击该文件夹,选择”Checkout…”,填写如下信息,如图:

4)点击“确定”按钮之后,会弹出一个对话框,让你输入账号密码,我们的账号是:svn001,密码是:123456.填写完之后,可以公告保存账号密码的选项。再点击“确定”就OK了。

5)开启自启动SVN服务器。现在我们已经配置好了svn服务器。但是,我们是通过手工通过命令启动的。如果,想每次centos 系统开启就启动这个服务的话,有以下方式可以实现。打开/etc/rc.local文件,shell命令如下:

vi /etc/rc.local

在文件末尾添加如下代码:

svnserve -d -r /opt/svn/

这样开机的时候就会自动启动svn服务器了。