SVN的简介和工作原理

   Subversion(简称svn)是近几年崛起的版本管理软件,是cvs的接班人,目前绝大多数开源软件都使用svn作为代码版本管理软件。Subversion支持linux和windows,但是普通应用在Linux上。

  SVN主要是通过两种方式来工作:即是通过独立服务器和依赖Apache方式来工作。

SVN的作用体现如下方面

 1、解决代码管理紊乱的问题。

 2、解决代码冲突的问题。

 3、解决代码拥有者对代码权限的控制。

 4、.......

 下面的例子主要是讲解SVN基于MySQL的认证。

 

系统环境:centos6.5   服务器IP:172.18.107.176

 一、先安装相关的数据包

#yum -y install mysql mysql-devel mysql-server httpd mod_auth_mysql subversion mod_dav_svn

二、启动相关服务。

#service mysqld start#service httpd start

三、创建项目和相关授权

#mkdir -p /data/svn/              #svnadmin create /data/svn/test   #创建一个名为test的项目#vim /data/svn/authz              #创建SVN认证文件[groups]admin = eelly01,eelly02,test100   #添加SVN用户名[test:/]                          #对test版本库进行权限设置@admin = rw                       #允许admin这个组的成员对这个版本库有读写的权限

四、授予项目Apache的权限,否则无法通过http的方式来访问。

#chown -R apache.apache /data/svn/ #chmod 755 /data/svn/ -R

五、创建认证数据库

#mysql -uroot -p 1)创建数据库mysql>create database svn_auth;mysql>use svn_auth;mysql>grant all privileges on *.* to svn@'%'identified by '123456'with grant option; 2)创建表mysql> CREATE TABLE users ( user_name CHAR(30) NOT NULL,user_passwd CHAR(20) NOT NULL,PRIMARY KEY (user_name)); 3)创建测试账号mysql> insert into svn_auth.users values('test100',encrypt('123456'));mysql> insert into svn_auth.users values('eelly01',encrypt('123456'));mysql> insert into svn_auth.users values('eelly02',encrypt('123456'));

六、Apache和SVN集成 

#vim /etc/httpd/conf/httpd.conf          #添加如下内容  
    DAV svn    SVNParentPath /data/svn/             #项目的父目录    AuthzSVNAccessFile /data/svn/authz   #svn访问认证文件    AuthName "EELLY SUBVERSION"          #认证名称    AuthType Basic                       #基本认证    AuthMYSQLEnable on                   #开启mysql认证    AuthMYSQLUser svn                    #数据库访问用户名       AuthMySQLPassword 123456             #数据库访问的密码    AuthMYSQLDB svn_auth                 #存放认证信息的数据库名称    AuthMYSQLUserTable users             #存放认证信息的表名称     AuthMYSQLNameField user_name         #存放认证用户名的字段名称    AuthMYSQLPasswordField user_passwd   #存放认证密码的字段名称    Require valid-user  

七、重启Apache服务器

 # service httpd restart    停止 httpd:                                               [确定]    正在启动 httpd:                                           [确定]

八、测试。访问

    

 

从上面看到在数据库里面创建test100这个用户是可以登录的。eelly01也是没有问题的。如下图。(当然里面是没有东西的了,因为是新建的版本库)

 简单的SVN基于MySQL认证就这样搭建完成了,只需要在MySQL数据库里面创建一个用户,然后在authz文件里面授予用户相应的权限即可访问相应的版本库了。