>[info]###CentOS6.5 搭建SVN服务器<b/>
作者 : fankey <6424051@qq.com>
时间 : 2016-01-20
<br/>
###`1. 检测系统是否安装了svn : `
检测命令 : `rpm -qa subversion`
![](https://box.kancloud.cn/2016-01-22_56a2006f23fb3.png)
`如果已经安装了svn,需要卸载可用命令 : yum remove subversion`
<br/>
###`2.安装svn : `
安装命令 : ` yum install httpd httpd-devel subversion mod_dav_svn mod_auth_mysql`
![](https://box.kancloud.cn/2016-01-22_56a20079b4fd0.png)
`安装结束后可以使用命令 : svnserve --version 查看当前svn版本`
###`3.创建一个版本库 : `
创建命令 : `svnadmin create /home/svn/project1`
<font color='red'>备注:project1 是版本库目录</font>
![](https://box.kancloud.cn/2016-01-22_56a20079cb5c6.png)
###`4.配置版本库文件 : `
配置目录conf 有如下文件
![](https://box.kancloud.cn/2016-01-22_56a20079df0d4.png)
###`5.配置 passwd : 新增用户以及相关用户密码`
![](https://box.kancloud.cn/2016-01-22_56a20079f33bc.png)
###`6.配置 authz 权限`
![](https://box.kancloud.cn/2016-01-22_56a2007a4aa5e.png)
###`7.配置 svnserve.conf`
![](https://box.kancloud.cn/2016-01-22_56a2007a5bc0b.png)
<span style='color:red'>(注意,password-db=passwd、authz-db=authz一定要取消前面的注释,不然会报错“无权限访问该项目”)
</span>
###`8.启动svn : `
启动svn命令 : `svnserve -d -r /home/svn/`
###`9.关闭svn :`
![](https://box.kancloud.cn/2016-01-22_56a2007a6fa9f.png)
查询svnserve所在进程ID : `ps aux | grep svn`
执行关闭 : `kill 进程id`
###`10.检出svn命令:`
`svn co svn://127.0.0.1/fankey --username fankey --password 123456`
![](https://box.kancloud.cn/2016-01-30_56ac281822b19.png)
<font color='red'>备注:如果输错了密码,或者用户更改了密码处理方法:</font>
1、进入记录svn密码文件的目录
`cd ~/.subversion/auth/svn.simple/`
2、使用cat命令查看 相关文件里面的内容
![](https://box.kancloud.cn/2016-01-30_56ac28184208d.png)
找到相应的文件删除文件即可
<br/>
#svn自动提交带代码
<font color='red'>找到相应svn项目下的hooks目录:创建 post-commit 文件(该文件必须有+x权限,否则发生255错误)</font> 代码如下:
`#!/bin/sh
#######获取SVN提交的项目
REPOS="$1"
#######获取提交的当前版本号
REV="$2"
#######导入中文字体
export LANG=zh_CN.GBK
#######获取提交时填写的备注信息
BAKTEXT=$(svnlook log $REPOS -r $REV)
#######echo "REPOS = ${REPOS} ; REV = ${REV} ; text = ${BAKTEXT}" >> home/svn/test/log/svn_hook_log.txt
#######判断备注是否为 'update' , 如果是update则执行同步更新
if [ "$BAKTEXT" = "update" ]; then
#自动跟新代码到/home/wwwroot/test 目录下面
/usr/bin/svn update /home/wwwroot/test --username reader --password 123456987
#echo "you input bak is update;" >> /home/svn/test/log/svn_hook_log.txt
fi`
![](https://box.kancloud.cn/2016-01-31_56ad698a0219f.png)
<br/>
<br/>
###Demo比较复杂的权限控制示例:
![](https://box.kancloud.cn/e492569fe450865a3b669b6da191ef6c_481x341.png)