前言:SVN(Subversion)是近年来崛起的版本管理工具,是CVS的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。
一、SVN的体系结构:
B:虚拟机:VMware® Workstation 9.0.0 build-812388;
C:subversion-1.6.1.tar.gz、subversion-deps-1.6.1.tar.gz;
D:主机名:samba。
[root@samba ~]# yum install -y subversion
最后显示则表示安装成功:
Complete!
B、版本验证命令:
[root@samba ~]# svnserve --version
显示:
svnserve, version 1.6.11 (r934486)
compiled Apr 11 2013, 17:28:04
Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).
The following repository back-end (FS) modules are available:
* fs_base : Module for working with a Berkeley DB repository.
* fs_fs : Module for working with a plain file (FSFS) repository.
Cyrus SASL authentication is available.
C、创建SVN目录以及版本库:
[root@samba ~]# mkdir /usr/local/svn
[root@samba ~]# chmod u+x /usr/local/svn
[root@samba ~]# svnadmin create /usr/local/svn/lmzsvn
D、配置服务、用户权限等:
进入conf目录:
D1、配置svn服务选项:
[root@samba conf]# vi svnserve.conf
将下面四行行首的"#"去掉,并修改成如下结果:
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
保存svnserve.conf文件;
D2、配置用户名与密码,按照user = passwd模式设置相关的用户信息:
[root@samba conf]# vi passwd
添加如下代码:
lmz = davepwd
保存passwd文件;
D3、配置用户的访问权限,按照分组的方式将用户分成不同的访问组,并对每个访问组赋予相关的访问和操作权限:
[root@samba conf]# vi authz
添加如下代码:
[groups]
admin = lmz
[davesvn:/]
@admin = rw
保存authz文件;
E、采用后台启动SVN的方式,启动SVN并关闭系统防火墙:
[root@samba conf]# svnserve -d -r /usr/local/svn
关闭防火墙命令:
[root@samba conf]# service iptables stop
F、安装SVN的客户端TortoiseSVN,即可访问:
G、接下来可以利用TOMCAT与SVN联合开发,不在此赘述。
[root@samba ~]# yum install gcc
[root@samba ~]# yum install openssl openssl-devel
[root@samba ~]# yum install expat
B、进入SVN软件包目录,并对SVN软件包进行解压(本人的软件包在/root/soft,可通过pwd命令查看):
[root@samba soft]#tar-zxvf subversion-1.6.1.tar.gz
[root@samba soft]#tar-zxvf subversion-deps-1.6.1.tar.gz
切记:这两个软件包一定要放在相同的目录下解压,因为解压之后你会发现,所有解压文件是放在一个文件中的,其中包括一些依赖关系。
C、进入SVN软件解压目录,进行编译并指定SVN软件的安装目录:
[root@sambasoft]# cdsubversion-1.6.1
[root@sambasubversion-1.6.1]#./configure --prefix=/usr/local/svn/
[root@sambasubversion-1.6.1]#make && make install
[root@sambasubversion-1.6.1]#mkdir -p /opt/svn/
[root@sambasubversion-1.6.1]#mkdir -p /opt/svn/svntest/
[root@sambasubversion-1.6.1]# cd /usr/local/svn/bin
[root@samba bin]#svnadmin create /opt/svn/svntest/
测试版本库创建成功后,进入/opt/svn/svntest目录下,可以看到如下结构:
该目录下包括svn的配置目录、数据目录、说明文件等。
[root@sambabin]#svnserve -d -r /opt/svn
关闭防火墙:
[root@sambabin]#service iptables stop
本机测试(co:是指checkout的缩写):
[root@sambabin]#svn co svn://127.0.0.1/svntest
结果如图所示:
途中需要你输入用户名与密码。
[root@sambasoft]#svn co svn://127.0.0.1/svntest/svn
结果如下:
从图中我们可以知道,svn服务器的下载文件明细,以及下载结果情况。
我们从远程客户端windows端的svn客户端测试,结果如图所示:#!/bin/sh
##Subversion的安装目录及执行文件
SVN_HOME=/usr/local/svn/bin
SVN_ADMIN=$SVN_HOME/svnadmin
SVN_LOOK=$SVN_HOME/svnlook
##配置库根目录
SVN_REPOROOT=/opt/svn
##增量备份文件存放路径
date=$(date '+%Y-%m-%d')
RAR_STORE=/usr/local/svn/svn_backup/full/$date
if [ ! -d "$RAR_STORE" ];then
mkdir -p $RAR_STORE
fi
##读取项目库列表
cd $SVN_REPOROOT
for name in $(ls)
do
##开始做全量备份
$SVN_ADMIN hotcopy $SVN_REPOROOT/$name $RAR_STORE/$name
done
#!/bin/sh
#Subversion的安装目录及执行文件
SVN_HOME=/usr/local/svn/bin
SVN_ADMIN=$SVN_HOME/svnadmin
SVN_LOOK=$SVN_HOME/svnlook
##配置库根目录
SVN_REPOROOT=/opt/svn
##增量备份文件存放路径
date=$(date '+%Y-%m-%d')
RAR_STORE=/usr/local/svn/svn_backup/increment/$date
if [ ! -d "$RAR_STORE" ];then
mkdir -p $RAR_STORE
fi
##日志存放目录
Log_PATH=/usr/local/svn/svn_backup/log
if [ ! -d "$Log_PATH" ];then
mkdir -p $Log_PATH
fi
##读取项目库列表
cd $SVN_REPOROOT
for name in $(ls)
do
if [ ! -d "$RAR_STORE/$name" ];then
mkdir $RAR_STORE/$name
fi
cd $RAR_STORE/$name
if [ ! -d "$Log_PATH/$name" ];then
mkdir $Log_PATH/$name
fi
echo ******Starting backup from $date****** >> $Log_PATH/$name/$name.log
echo ******svn repository $name startting to backup****** >> $Log_PATH/$name/$name.log
$SVN_LOOK youngest $SVN_REPOROOT/$name > $Log_PATH/A.TMP
UPPER=`head -1 $Log_PATH/A.TMP`
##取出上次备份后的版本号,并做+1处理
NUM_LOWER=`head -1 $Log_PATH/$name/last_revision.txt`
let LOWER="$NUM_LOWER+1"
##开始做增量备份并记录$UPPER,为下次备份做准备
$SVN_ADMIN dump $SVN_REPOROOT/$name -r $LOWER:$UPPER --incremental > $RAR_STORE/$name/$LOWER-$UPPER.dump
rm -f $Log_PATH/A.TMP
echo $UPPER > $Log_PATH/$name/last_revision.txt
echo ******This time we bakcup from $LOWER to $UPPER****** >> $Log_PATH/$name/$name.log
echo ******Back up ended****** >> $Log_PATH/$name/$name.log
done