Linux CentOS下配置SVN+SVN勾子
环境介绍:
操作系统:CentOS release 6.5 (Final) 64位
网络环境:内网
1 配置SVN
1.1 安装SVN组件包
使用yum安装svn所需的组件包
# yum –y install subversion
1.2 配置SVN
1.2.1 创建svn库路径
创建svn库路径,该目录后期提供用户文件写入和读取。
# mkdir -p /date/svn/
1.2.2 创建SVN版本库
使用特定的命令来创建版本库,创建成功后该目录会出现SVN配置文件。
# svnadmin create /date/svn/
1.2.3 定义配置文件
#vim /opt/svndata/repos1/conf/svnserve.conf
[general] anon-access = none auth-access = write password-db = passwd #定义用户密码的配置文件 authz-db = authz #定义用户权限的配置文件 realm = svn
1.2.4 用户权限配置
1、创建svn访问用户
#vim /data/svn/passwd
[users] test = test 创建了一个叫tset密码为test的用户
2、配置用户访问权限
#vi /opt/svndata/repos1/conf/authz
[groups] admin = test # harry_and_sally = harry,sally [/] @admin = rw [repos1:/abc/aaa] @admin = r
版本库目录格式:
[<版本库>:/项目/目录] #是以项目名作为第一个单位。试想肯定是以项目为单元的
@<用户组名> = <权限>
<用户名> = <权限>
其中,方框号内部分可以有多种写法:
/,表示根目录及以下。根目录是svnserve启动时指定的,我们指定为/opt/svndata。这样,/就是表示对全部版本库设置权限。
repos1:/,表示对版本库1设置权限
repos2:/abc, ,表示对版本库2中的abc项目设置权限
repos2:/abc/aaa, ,表示对版本库2中的abc项目的aaa目录设置权限
权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。
1.2.5 启动SVN
# svnserve -d -r /date/svn/
-d表示以daemon方式(后台运行)运行
-r /date/svn指定根目录是/date/svn
1.3 配置钩子
1.3.1 配置版本检测工具
自己利用python写了一个自动检测库里面文件版本的工具。代码如下:
# vim /date/svn/hooks/gouzi.py #!/usr/bin/env python if __name__==‘__main__‘: importsys,string try: logfile= open(‘/tmp/python.out‘,‘a+‘) logfile.write("this is python hook") logfile.close() except: exit(1) sys.exit(0)
此工具需放在库目录中的hooks目录中。
1.3.2 配置UPDATE脚本
1、首先在客户端上手工checkout一次
# svn checkout svn://192.168.21.28/repos
2、编辑自动同步脚本
# vim svn_update.sh
代码如下
#!/bin/bash /usr/bin/svn update /linshi/repos --username test --password test if [ $? == 0 ] then echo "ok" >> /tmp/z.out fi
其中:/linshi/为存放目录(看环境而定)
--username test 用户名为test
--password test 密码为test
3、修改权限
# chmod +x /root/svn_update.sh
4、配置计划任务
因脚本无法实现自动执行,故配置计划任务设置每分钟执行一次。
# crontab -e * * * * /root/svn_update.sh > /dev/null 2>&1
-----------小欢原创
本文出自 “小欢” 博客,请务必保留此出处http://x1aoxiao.blog.51cto.com/1836651/1655046
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。