Centos5.8下搭建svn

来源:互联网 发布:工业设计常用建模软件 编辑:程序博客网 时间:2024/04/30 09:36

一、安装svn(subversion)

1.更新源

# yum -y update

2.检查svn软件是否安装

# rpm -aq subversion

3.如果没安装,则执行下面命令安装

# yum -y install subversion

二、配置并启动svn

1.建立svn版本数据存储根目录(svndata)及用户、密码权限目录(svnpasswd)

# mkdir -p /appliction/svndata
# mkdir -p /appliction/svnpasswd

2.启动svn服务指定服务的svn根目录

# svnserve -d -r /appliction/svndata/
# svnserve -d -r /appliction/svndata/ --pid-file=/appliction/svndata/svn.pid

3.查看svn进程

# ps -ef|grep svn
# ps -ef|grep svn|grep -v grep

4.检测svn端口

# lsof -i :3690
# lsof -i tcp:3690
# netstat -lnt|grep 3690

三、建立项目版本库

1.创立一个新的 Subversion 项目 sadoc

# svnadmin create /appliction/svndata/sadoc
# ls -ld /appliction/sadoc
提示:查看svnadmin 命令帮助的方法
# svnadmin help
# svnadmin help create
查看目录树
# tree /appliction/svndata/

2.调整 svn 配置文件及权限文件

# cd /appliction/svndata/sadoc/conf/
# cp svnserve.conf svnserve.conf.bacpup
# cp svnserve.conf svnserve.conf.$(date +%F)
# vi svnserve.conf

修改为下面参数

auth-access = write
password-db = /appliction/svnpasswd/passwd
authz-db = /appliction/svnpasswd/authz

3.对比源文件查看改了哪些东西

# diff svnserve.conf.bacpup svnserve.conf

4.检查

# egrep "\-access|\-db =" svnserve.conf

四、添加svn用户

1.拷贝模板文件

# cp passwd authz /appliction/svnpasswd/

2.查看文件复制过去没有

# ll /appliction/svnpasswd/

3.添加用户(这里添加了3个)

# cd /appliction/svnpasswd/
# vi passwd

注意:前面是账号,后面是密码

[users]
admin1 = admin123
admin2 = admin123
admin3 = admin123

提示:更改svnserve.conf时,需要重启svn,更改 passwd authz不需要重启

4.用户组的配置

# vi authz

5.配置版本库权限 ( sadoc库 )
这里写图片描述

新建群组用户名为sagroup ,该有2个用户

设置群组权限前面加 @

[groups]
sagroup = admin1 ,admin2
[sadoc:/]
admin3 = rw
@sagroup = r

五、重启svn命令

命令1

# pkill svnserve# svnserve -d -r /appliction/svndata

命令2

# kill -USER1 `cat /appliction/svndata/svn.pid`# svnserve -d -r /appliction/svndata/ --pid-file=/appliction/svndata/svn.pid

六、SVN钩子

钩子脚本是被版本库事件触发的程序,例如新修订版本的创建或未版本控制属性的修改。每一种钩子都会被告知事件的足够信息,操作的目标,触发事件的用户名。依赖于钩子的输出或返回状态,钩子程序可以继续执行,停止或以某种方式挂起。
1.钩子说明

钩子 说明 post_commint 在提交完成成功创建版本之后执行该钩子,提交已经完成,不可更改,因此,本脚本的返回值被忽略。提交完成时触发事务 pre_commint 提交完成前触发执行该脚本 start_commint 在客户端还没向服务器提交数据之前,即还没有建立 Subversion transition之前,执行该脚本(提交前触发事务) pre-lock 对文件进行加锁之前执行该脚本 post-lock 对文件进行加锁之后执行该脚本 pre-unlock 对文件进行解锁操作之前执行该脚本 post-unlock 对文件进行解锁操作之后执行该脚本 pre-revprop-change 在修改 revision 属性之后执行该脚本 post-revprop-change 在修改 revision 属性之前执行该脚本

2.钩子应用场景

钩子 场景 pre-commit 限制上传文件扩展名及大小,控制提交要输入的信息等 post-commit SVN更新自动通知,更新触发chekout程序,然后实时 rsync 推送到服务器等

3.钩子生产实例
post-commit 代码同步

#!/bin/shREPOS="$1"REV="$2"export LC_CTYPE="en_US.UTF-8"export LC_ALL=LOGPATH="/app/log"[ ! -d ${LOGPATH} ] && mkdir ${LOGPATH} -p#update content from svnSVN=/usr/bin/svn$SVN update --username xx --password oo /home/testif [ $? -eq 0 ]then/usr/bin/rsync -az --delete /home/test /tmp/fi

shell

# export LC_CTYPE="en_US.UTF-8"# export LC_ALL=# chmod 700 post-comit

pre-comit 限制上传文件扩展名及大小(扩展和大小不可用)

#!/bin/shREPOS="$1"TXN="$2"#此处更改大小限制,这里是5MMAX_SIZE=5242880#此处增加限制文件后缀名FILTER='\.(zip|rar|o|obj|tar|gz)$'SVNLOOK=/usr/bin/svnlook#LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | wc -c`if [ "$LOGMSG" -lt 9 ];then    echo -e "nLog message cann't be empty!you must input more than 8 chanrs as comment!." 1>&2exit 1fifiles=$($SVNLOOK changed -t $TXN $REPOS |cut -d " " -f 4-)#echo "files">&2#echo "$r">&2#exit 1rc=0echo "files"|while read f;do#check file typeif echo $f|tr A-Z a-z|grep -Eq $FILTER;then    echo "File $f is not allow ($FILTER) file" >&2    exit 1;fi#check file sizefilesize=`$SVNLOOK cat -t "$TXN" "$REPOS" "$f" | wc -c`if [ "$filesize" -gt "$MAX_SIZE" ];then    echo "File $f is too large(must <=$MAX_SIZE)B" >&2    exit 1fidone#ALL checks passed,so allow the commitif [ $? -eq 1 ];thenexit 1elseexit 0fi
0 0
原创粉丝点击