SVN安装配置详解
一、安装所需代码包
subversion源代码包:
下载地址:http://mirror.bjtu.edu.cn/apache/subversion/subversion-1.8.0.tar.bz2
sqlite-amalgamation源代码包:
下载地址:http://www.sqlite.org/sqlite-amalgamation-3071501.zip
二、编译安装源代码
1、创建svn安装目录
# mkdir /usr/local/svn
2、解压代码包
#tar -jxvf subversion-1.8.0.tar.bz2-C /usr/src//解压subversion包
#unzipsqlite-amalgamation-3071501.zip
#mv sqlite-amalgamation-3071501.zip /usr/src/subversion-1.8.0/sqlite-amalgamation
//解压sqlite-amalgamation到已解压的subversion目录下,并重命名为sqlite-amalgamation。
(注:安装过程中有些机器可能会提示缺少一些包,大家可以根据提示下载安装。)
依赖包:
Yum -y install Apr apr-util apr-devel apr-util-devel
3、编译安装
# cd subversion-1.8.0
# ./configure --prefix=/usr/local/svn/
# make && make install
4、测试是否安装成功
# /usr/local/svn/bin/svnserve --version
5、将命令添加环境变量
vim /etc/profile
添加以下命令
PATH=$PATH:/usr/local/svn/bin
export PATH
三、配置svn
1、建立版本库目录(不与svn同目录)
# mkdir -p /opt/svndata/
2、建立svn版本库
# svnadmin create /opt/svndata/game/
(注:执行此命令后svn会自动在repos目录下生成必需的配置文件,如果为生成则svn库建立失败。所生成文件无法手建,否则无效。)
3、修改版本库配置文件
# vim /opt/svndata/game/conf/svnserve.conf
anon-access = none // 使非授权用户无法访问
auth-access = write //使授权用户有写权限
password-db = passwd //指明密码文件路径
authz-db = authz // 访问控制文件
realm = /opt/svndata/game //认证命名空间,subversion会在认证提示
里显示,并且作为凭证缓存的关键字。
(注:各语句都必须顶格写, 左侧不能留空格, 否则会出错。这是svn配置文件的格式,需按照以上格式书写。)
4、配置用户
#vim /opt/svndata/game/conf/passwd
插入用户名和密码,(格式为:用户名 = 密码),可添加多个。
[user]
Wgmml = 123456
Wuxu = 123456
5、给用户配置权限
# vim /opt/svndata/game/conf/authz
设置用户权限,(格式:用户名 = 权限)。只读“r”、读写“rw”没有列
出用户拒绝登录。具体设置可见svn手册。
[/]
wgmml = rw
wuxu = r
6、启动svn服务
# svnserve -d -r /opt/svndata
-d:表示以daemon方式(后台运行)运行
-r :/opt/svndata/game指定根目录是/opt/svndata/game
7.检查端口(svn默认端口是3690)
# netstat -nelp|grep 3690
---------------------------------------------------自动更新-------------------------------------------
网站根目录:/data/test/
Svn版本库:/data/svn/test
现在需要实现当客户端提交后自动更新到网站根目录。在版本库下有一个目录为hooks,在该目录下新建post-commit,其内容如下:(红色部分必须有,蓝色部分可选)
#!/bin/sh
REPOS=$1
REV=$2
time=`date "+%Y-%m-%d %H:%M:%S"`
export LANG=zh_CN.UTF-8
# 当用户提交的时候注释里包含aotu_deploy字符串的时候才发布到web目录
if (/data/app/svn/bin/svnlook log -r $REV /data/svndata/jfzd2012/ | grep "auto_deploy")
then
echo "start deploy $time" >> /tmp/svn_autocommit.log
/usr/local/svn/bin/svn export --username wp1998 --password 111 "svn://192.168.8.8/test"/data/test/ --force --no-auth-cache
fi
给脚本执行权限:chmod +x post-commit
------------------------------------------------------------------------------------结束----------------------------------------------------------------------------------------
------------------------------------------------SVN的迁移---------------------------------------------
说明:需要把192.168.8.141(源)主机下的/data/svn/www版本库迁移到192.168.8.8(目标)主机上。
步骤:
1.在源服务器上先建立版本库的dump
#svnadmin dump /data/svn/www/>www.dump
复制dump到目标主机(下面是网络scp复制,方式自选,ftp,http,移动设备都可以)。
#scp www.dump root@192.168.8.8:/root/
在目标服务器上新建一个版本库/data/svn/www
#svnadmin create /data/svn/www
在目标服务器上导入dump
#svnadmin load /data/svn/www < www.dump
然后再修改/data/svn/www/conf目录下的配置文件来设置权限。
---------------------------------------------------结束-----------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------windows下-------------------------------------------------
1、导出:
在windows下,执行:
"c:\Program Files\VisualSVN Server\bin\svnadmin.exe" dump D:\Repositories\TestProject > d:\svndumpfile\TestProject_20090722.dump
2、将dump文件拷贝到目标机器
3、在目标机器创建仓库:
svnadmin create /repositories/TestProject
并注意检查是否需要修改文件夹权限
4、执行命令svnadmin load:
svnadmin load TestProject < TestProject_20090722.dump