一、svn主从搭建
1.搭建环境
主:192.168.1.245
ps:主上面已经运行了svn服务。
从:192.168.2.249
2.svn安装
yum -y install subversion
3.创建svn库
svnadmin create /opt/svn/repos
4.拷贝文件
将主节点的authz、passwd、svnserve.conf配置文件到备节点。
cd /opt/svn/repos/; scp authz passwd svnserve.conf root@192.168.2.249:/opt/svn/repos/conf;
5.修改文件
修改hooks文件下面的pre-revprop-change(主从都需要修改)
[root@bsdi hooks]# vim pre-revprop-change.tmpl
#!/bin/sh
exit 0
[root@bsdi hooks]# mv pre-revprop-change.tmpl pre-revprop-change
[root@bsdi hooks]# chmod +x pre-revprop-change
6.启动从的svn服务
svnserve -d -r /opt/svn/repos/ --log-file /opt/svn/repos/info.log
7.初始化svn库
主节点执行下面的命令
svnsync init svn://192.168.2.249 svn://192.168.1.245 --username tongbu --password xxx --no-auth-cache
8.同步数据
在主节点执行下面的命令
svnsync sync --non-interactive svn://192.168.2.249 --username tongbu --password xxx
9.配置自动同步钩子
[root@bsdi hooks]# vim post-commit.tmpl
#!/bin/sh
svnsync sync --non-interactive svn://192.168.2.249 --username tongbu --password xxx [root@bsdi hooks]# mv post-commit.tmpl post-commit
[root@bsdi hooks]# chmod +x post-commit
10.hooks文件介绍
Hooks 钩子,主要实现的功能就是在特定事件发生之前或者之后自动执行事先定义好的脚本代码来实现某些功能,类似于JS中的监听事件、MySQL中的触发器、Django中的signals信号等
SVN服务端hooks主要有以下9种:
pre-lock:文件加锁前执行,不常用
post-lock:文件加锁后执行,通常用来发送锁定事件通知,需要传递两个参数给hooks脚本,按照顺序依次为:1.版本库路径,2.锁定路径的认证用户名
per-unlock:文件解锁前执行,不常用
post-unlock:文件解锁后执行,通常用来发送解锁事件通知,需要传递两个参数给hooks脚本,按照顺序依次为:1.版本库路径,2.解锁路径的认证用户名
start-commit:开始提交时执行,在pre-commit之前,通常用来确定用户是否有提交权限
pre-commit:提交之前执行,在start-commit之后,通常用来对提交内容的检查,例如我们后边要介绍的利用pre-commit做提交log的合规性检查,需要传递两个参数给hooks脚本,按照顺序依次为:1.版本库路径,2.提交事务的名称
post-commit:提交完成后执行,这应该是使用最广的hooks之一,通常用来在提交之后发送提交通知,甚至是利用它来做自动化的CI/CD等操作,需要传递两个参数给hooks脚本,按照顺序依次为:1.版本库路径,2.提交创建的修订版本号
pre-revprop-change:在修改revision属性之前执行,不常用
post-revprop-change:在修改revision属性之后执行,不常用