Centos安装配置Subversion

By | 2013年2月21日

基本安装步骤

#--------------------------------------------------------安装
yum -y install subversion
#创建版本库
mkdir /var/svn/myproject
svnadmin create /var/svn/myproject
#--------------------------------------------------------开始配置
#创建两个账号:xiaobai和xiaohuang
vim /var/svn/myproject/conf/passwd
		[users]
		xiaobai=xiaobai1214
		xiaohuang=xiaohuang1976
#定义用户,组,权限关系
vim /var/svn/myproject/conf/authz
              [groups]
              mygroups=xiaobai,xiaohuang
	      [/]
	      @mygroups=rw
#svn的主配置,禁止匿名用户访问SVN,仅允许通过验证的用户进行操作
vim /var/svn/myproject/conf/svnserve.conf
		anon-access=none
		auth-access=write
		realm=欢迎访问myproject项目-SVN系统
#-------------------------------------------------------启动
# 参数r:指定版本库位置
svnserve -d -r /var/svn/myproject

#或者直接
vim /etc/init.d/svnserve
       args="--daemon --log-file=/var/log/svnserve.log --pid-file=${pidfile} -r /var/svn/myproject $OPTIONS"
#然后
service svnserve start
#开机启动:写入/etc/rc.local文件即可或者
chkconfig svnserve on
#客户端连接检出时仅需 svn://ip地址

多项目,多版本库

比如创建多个项目

#创建多个项目
mkdir /var/svn/project1
svnadmin create /var/svn/project1

mkdir /var/svn/project2
svnadmin create /var/svn/project2

启动参数r需要做调整:

svnserve -d -r /var/svn

客户端访问时的链接就要在ip后面加上版本库名称了:

#访问版本库project1
svn://ip地址/project1

#访问版本库project2
svn://ip地址/project2

使用Hook文件实现即时同步

此功能简言之:提交svn时,自动把文件更新到网站目录。

配置很简单,subversion自带了模板文件:/var/svn/project1/hooks/post-commit.tmpl

将此文件重命名为post-commit,在commit操作后将自动调用此文件。

mv   /var/svn/project1/hook/post-commit.tmpl    /var/svn/project1/hook/post-commit

vim /var/svn/project1/hook/post-commit
#内容为:
CURDATE=`date`
webdata=/var/www/html/project1
echo "Code Deployed By at $CURDATE" >> /var/svn/postcommit.log
/usr/bin/svn update $webdata --username 用户名 --password 密码 --no-auth-cache >> /var/svn/postcommit.log

#修改post-commit权限
chmod 645 post-commit

配置完成后,需要先导入一份网站文件到svn中,然后co(checkout)到/var/www/html/project1中,这样客户端在commit时,postcommit才能生效。

#客户端提交可以使用流行的王八壳,右键导入
#导入完成后,在服务器上,运行checkout命令,将网站文件检出到web目录
svn checkout svn://ip /var/www/html/project1 --username 用户名 --password 密码

此后,客户端的文件变化后,右键commit,将自动把更新的文件,update到网站目录。

ps:此功能虽然不错,但是风险很高,万一提交错了,少提交文件,就有可能使网站出现不可预知的错误。

某一天你发现网站有问题,检查了半天,原来是少提交一个文件!

另外,如果有多个管理员在使用这个svn,当提交时,出现冲突之类的问题,那就麻烦了,post-commit将执行失败,网站更新过程将卡在半路…

本人亲身体验此功能带来的麻烦,so暂停了服务器上的svn。