1、介绍

Subversion是一个自由,开源的版本控制系统,这个版本库就像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况。这样就可以很方面恢复到以前的版本,并可以查看数据更改细节。目前,Subversion已成为主流的开源代码版本管理软件之一,简称SVN。

2、SVN相关命令了解

svn:命令行客户端

svnadmin:用来创建、调整或修复版本库的工具

svnserve:svn服务程序

svndumpfilter:过滤svn版本库转储数据流的工具

svnsync:svn数据同步工具,实现另外存一份相同的

svnlook:用来查看办本科中不同的修订版和事务

3、两种运行模式

3.1 利用svnserve作为独立服务运行,通过svn协议访问

3.2 借助mod_dev_svn模块,由apache服务运行(Web/DAV),通过http或https协议访问。想了解此运行模式可以参考着篇博文:http://lizhenliang.blog.51cto.com/7876557/1340646

4、安装与部署

对于Ubuntu来说,装个SVN是件很容易的事,可以直接通过apt软件包管理安装。

4.1 直接安装

# sudo apt-get install subversion

4.1 创建版本库

# sudo mkdir –p /srv/svn/eweb

# sudo svnadmin create /srv/svn/eweb

4.2 了解版本库

# 进入版本库查看生成的相关文件

# ls /srv/svn/eweb

conf db format hookslocks README.txt

# 我们主要关心的是conf和db文件,conf文件夹下是存放主配置文件和用户、权限位置,db文件夹是存放svn转储后的数据。

# ls /srv/svn/eweb/conf

authz passwd svnserve.conf

# authz文件是设置用户权限,passwd文件是存储用户及密码,svnserve.conf是主配置文件,先配置主配置文件。

4.3配置版本库

# sudo vi svnserve.conf #将以下参数去掉注释(要顶格)

[general]

anon-access = none #匿名访问权限,默认read,none为不允许访问

auth-access = write #认证用户权限

password-db = passwd #用户信息存放文件,默认在版本库/conf下面,也可以绝对路径指定位置

authz-db = authz

# sudo vi passwd #格式是用户名=密码,采用明文密码

[users]

xiaoming = 123

zhangsan = 123

lisi = 123

zhangchengjie = zhangchengjie@!2016

# sudo vi authz

[groups] #定义组的用户

manager = xiaoming

php = zhangsan,lisi,zhangchengjie

[eweb:/] #以根目录起始的eweb版本库manager组为读写权限

@manager = rw

[eweb:/media] #php组对eweb版本库下media目录为读写权限

@php = rw

4.4 启动svn服务

# sudo svnserve -d -r /srv/svn --listen-port 21321

4.5关闭svn服务

#sudo pkill svnserve

5.创建web访问目录

#mkdir -p /var/www/eweb 我的web在这里根据自己机器环境定

5.1设置钩子post-commit

#sudo cp /srv/svn/eweb/hooks/post-commit.tmpl /srv/svn/eweb/hooks/post-commit

#sudo vim /srv/svn/eweb/hooks/post-commit

添加如下内容

export LANG="en_US.UTF-8"

SVN=/usr/bin/svn

WEB=/var/www/eweb

$SVN update $WEB --no-auth-cache --non-interactive --username zhangchengjie --password 'zhangchengjie@!2016'

chown -R www:www $WEB

chmod +x post-commit

从新启动服务

#sudo pkill svnserve

#sudo svnserve -d -r /srv/svn --listen-port 21321

6.在终端下执行如下命令

#svn co svn://127.0.0.1:21321/eweb /var/www/eweb --username zhangchengjie--password ‘zhangchengjie@!2016’

注意:127.0.0.1/eweb是svn仓库名,/var/www/eweb是web目录,如果在password中密码使用特殊字符需要用单引号引用,否则会报错bash不解析。

7.客户端验证,写phpinfo文件通过浏览器访问测试。


8.为了方便以后启动关闭在sbin建立svn启动脚本

vim /sbin/svn


1 #!/bin/bash

2 #autor:boy

3 #date:2016/7/28

4 # startup/stop/restart svn services

5

6 ####### start ##############

7

8 case "$1" in

9 start)

10 sudo svnserve -d -r /srv/svn --listen-port 21321

11 ;;

12

13 stop)

14 sudo pkill svnserve

15 ;;

16

17 *)

18 echo "Usage:start,stop"

19 ;;

20

21 esac

chmod 755 /sbin/svn
sudo /sbin/svn stop

sudo /sbin/svn start