1:环境centos7.6
2.安装svn
yum -y install subversion
3.配置
建立版本库目录
mkdir /home/svndata (lnmp.org,lnmp镜像安装环境)
svnserve -d -r /home/svndata
4.建立版本库
创建一个新的Subversion项目
svnadmin create /home/svndata/test
配置允许用户rsync访问
cd /home/svndata/test/conf
vi svnserve.conf
anon-access=read
auth-access=write
password-db=passwd
realm = My First Repository
注:修改的文件前面不能有空格,否则启动svn server出错, vi+文件 按键i插入 输入完成 按键退出esc 后,冒号:wq 保存编辑,:!q 编辑不保存
vi passwd
[users]
#<用户1> = <密码1>
#<用户2> = <密码2>
xjl = xjl //等号左右是空格
vi authz
[\]
xjl = rw
5.客户端连接
===========================================================
需输入服务器密码
需输入svn账号+密码
===============================================================
6.实现SVN与WEB同步,可以CO一个出来,也可以直接配在仓库中
1)设置WEB服务器根目录为/home/wwwroot
2)进行/home/wwwroot目录checkout一份SVN
步骤一:svn co svn://127.0.0.1/test
步骤二:svn co svn://127.0.0.1/test /home/wwwroot/test //这两步都要执行,不然到时侯会出错。
3)建立同步脚本
cd /home/svndata/test/hooks/
编辑post-commit,在文件最后添加以下内容
vi post-commit
#!/bin/sh
export LANG=zh_CN.UTF-8
REPOS="$1"
REV="$2"
SVN_PATH=/usr/bin/svn
WEB_PATH=/home/wwwroot/test //根目录
LOG_PATH=/tmp/svn_update.log
#/usr/bin/svn update --username user --password password $WEB_PATH --no-auth-cache
echo "nnn##########开始提交 " `date "+%Y-%m-%d %H:%M:%S"` '##################' >> $LOG_PATH
echo `whoami`,$REPOS,$REV >> $LOG_PATH
$SVN_PATH update --username xjl--password xjl$WEB_PATH --no-auth-cache >> $LOG_PATH
chown -R www:www $WEB_PATH
变成可执行文件
chmod +x post-commit
/*到这边整处流程就结束了,以下是svn搭建经常遇到的问题*/
创建同步钩子时候遇到的问题:
一直提示跳过xx目录,原因是项目文件是我们手动建的,钩子识别不到,所以得先收到过checkout下
svn co svn://127.0.0.1/test
可以用下面的命令提交,也可以手动提交
svn add test5
svn commit -m 'add test5'
安装错的时侯,删除整个svndata
重新安装时报错
svnserve: Can't bind server socket: Address already in use
直接killall svnserve
/##################/
多开svn
mkdir /home/svnweb
svnserve --listen-port 3691 -d -r /home/svnweb
svnadmin create /home/svnweb/webroot
其余部骤同上
有个地方需要注意
步骤一:svn co svn://127.0.0.1:3691/webroot
步骤二:svn co svn://127.0.0.1:3691/webroot /home/wwwroot/webroot //这两步都要执行,不然到时侯会出错。
以下也同上面步骤
根目录运行:svnserve -d -r /home/svndata
ps -aux |grep svn
报错:svnserve: E000098: Can't bind server socket: Address already in use
解决:根目录:killall svnserve