zoukankan      html  css  js  c++  java
  • CentOS 6.8使用Subversion + Usvn 搭建版本管理服务器+常用钩子

    snailshadow 标签:

    一. Subversion 简介


    Subversion是一个自由,开源的版本控制系统。Subversion将文件存放在中心版本库里。这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况。这样就可以籍此将数据恢复到以前的版本,并可以查看数据的更改细节。

    二. 环境准备CentOS 6.8

    1,操作系统内核版本

    [root@localhost ~]# uname -r
    2.6.32-642.el6.x86_64

    2,关闭selinux

    [root@localhost ~]# vim /etc/selinux/config

    SELINUX=disabled

    3,关闭防火墙

    [root@localhost ~]#service iptables stop

    [root@localhost ~]#chkconfig iptables off

    4,配置yum源(这里使用163yum源和epelyum源)

    [root@localhost ~]#wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo

    [root@localhost ~]#rpm -ivh http://mirrors.yun-idc.com/epel//6/x86_64/epel-release-6-8.noarch.rpm

    修改配置文件

    #vim /etc/yum.repos.d/CentOS-Base.repo

    :%s/$releasever/6/g

    yum clean all

    yum makecache

    搞定!!!

    三、安装

    1. 安装所需软件

    [root@localhost ~]#yum install subversion httpd mod_dav_svn php php-mysql mysql-server perl-DBI perl-DBD-mysql mysql-devel mod_auth_mysql 

    2,查看 subversion 是否安装成功

    [root@localhost ~]#svnserve --version
    svnserve,版本 1.6.11 (r934486)

    ------略

    3,启动httpd、mysqld服务

    [root@localhost ~]#service httpd start

    [root@localhost ~]#service mysqld start

    [root@localhost ~]#chkconfig httpd on

    [root@localhost ~]#chkconfig mysqld on

    [root@localhost ~]# chkconfig svnserve on

     

    4,设置mysqld密码和访问权限

    [root@localhost ~]#mysqladmin -u root password 123456

    [root@localhost ~]#mysql -uroot –pcoship

    mysql> grant all on *.* to 'root'@'%' identified by 123456 WITH GRANT OPTION;
    Query OK, 0 rows affected (0.00 sec)

    mysql> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0.00 sec)

    四.配置Usvn

    1,从GitHub下载Usvn

    [root@localhost ~]#wget https://github.com/usvn/usvn/archive/1.0.7.tar.gz

    2,安装配置Usvn

    [root@localhost ~]#tar -zxvf 1.0.7.tar.gz

    [root@localhost ~]#mv usvn-1.0.7/ /var/www/html

    [root@localhost ~]#chown -R apache:apache /var/www/html/usvn

    3,配置Apache目录允许重写(默认已经配好)

    vim /etc/httpd/conf/httpd.conf 

    文件最后加入

    <Directory "/var/www/html/">

            AllowOverride all                                 ---此项需要修改,否则后面会报错

            Order allow,deny

            Allow from all

    </Directory>

    4,重启apache服务

    [root@localhost ~]#service httpd restart

    5,浏览器输入http://ip/usvn/public/install.php 开始安装

    image

    一直点击下一步,如果出现这个报错,就说明httpd.conf配置文件中,根目录的AllowOverride没有配置为yes

    image

    选择时区和语言:

    image

    设置svn根目录,我这里使用默认配置

    创建版本库路径

    [root@localhost ~]#mdkir /home/subversion/

    创建密码文件和权限文件路径

    [root@localhost ~]#mdkir /home/subversion/passwd

    给目录授权

    chown apache:apache –R /home/subversion/

    image

    配置数据库

    image

    创建管理员,其中密码必须8位以上(admin/1qaz2wsx)

    image

    最后一步将生成的配置,添加到httpd.conf文件结尾

    image

    重启httpd服务

    [root@localhost ~]#service httpd restart

     

    创建项目,用户组,用户(略)

    客户端连接项目:http://10.80.0.161/usvn/public/svn/docs/       docs为项目名称

     

    五.常见问题

    1、安装到最后遇到一个头痛的问题,当目录出现中文时无法设置目录权限

    解决方法:

    • 设置系统编码:vim /etc/sysconfig/i18n  改成如下

           LANG="zh_CN.UTF-8"

            SYSFONT="latarcyrheb-sun16"

    • 修改USVN语言环境:vim /var/www/html/usvn/app/bootstrap.php

           在文件最前面加上

           setlocale(LC_ALL, 'zh_CN.UTF-8');

    2、提交message不能为空

    vim ${svn_dir}/hooks/pre-commit
    
    #!/bin/sh
    REPOS="$1"
    TXN="$2"
    
    # Make sure that the log message contains some text.
    SVNLOOK=/usr/bin/svnlook
    $SVNLOOK log -t "$TXN" "$REPOS" | 
       grep "[a-zA-Z0-9]" > /dev/null
    #|| exit 1
    
    #commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1
    LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
    if [ "$LOGMSG" -lt 10 ];
    then
        echo -e "svn log cann't less than 10 character" 1>&2
        exit 1
    fi
    # All checks passed, so allow the commit.
    exit 0
    chown apache:apache  pre-commit
    chmod +x pre-commit

    3、使用sendmail服务实现提交后,发送邮件通知管理员

    • 安装sendmail和sendmail-cf
    #yum install sendmail
    #yum install -y sendmail-cf
    • 修改/etc/mail/sendmail.mc
    DAEMON_OPTIONS(`Port=smtp,Addr=192.0.1.2, Name=MTA')dnl  #IP地址配置为本机IP地址
    • 修改/etc/mail.rc 在文件最后增加内容
    set from=xxx@163.com smtp=smtp.163.com smtp-auth-user=xxx smtp-auth-password="163邮箱的客户端授权码" smtp-auth=login

    注:使用163邮件发送邮件,密码要填写客户端授权码,否则会报错“535 Error:authentication failed”,关于如何生成客户端授权码,请参考下面这个网址:

    https://jingyan.baidu.com/article/495ba841ecc72c38b30ede38.html

    • 增加svn_email_commit.sh发送邮件脚本,内容如下:
    #cd /home/subversion/svn/docs/hooks/
    #vim svn_sendemail_commit.sh
    #!/bin/bash
    REPOS=$1
    REV=$2
    SENDTO=$3
    SENDFROM=xxx@163.com
     
    LIMITDIFF=200
    CHANGELOG=`svnlook log -r $REV $REPOS`
    AUTHOR=`svnlook author -r $REV $REPOS`
    CHANGED=`svnlook changed -r $REV $REPOS`
    DIFF=`svnlook diff -r $REV $REPOS | head --lines=$LIMITDIFF`
    DATE=`date`
    TMPFILE=/tmp/svn$REV-$RANDOM.message
     
    SUBJECT="SVNCommit ($AUTHOR) $REPOS [$REV]"
    echo "-------------------- SVN Commit Notification --------------------
    Repository: $REPOS
    Revision:   $REV
    Author:     $AUTHOR
    Date:       $DATE
         
    -----------------------------------------------------------------
    Log Message:
    -----------------------------------------------------------------
    $CHANGELOG
     
    -----------------------------------------------------------------
    Changes:
    -----------------------------------------------------------------
    $CHANGED
     
    -----------------------------------------------------------------
    Diff: (only first $LIMITDIFF lines shown)
    -----------------------------------------------------------------
    $DIFF
    " > $TMPFILE
    # Send email
    #cat $TMPFILE | mail -a "From: $SENDFROM" -s "$SUBJECT" "$SENDTO"
    cat $TMPFILE | mail -a "$TMPFILE" -s "$SUBJECT" "$SENDTO"
     
    # Cleanup
    rm $TMPFILE
    • 修改post-commit脚本
    #!/bin/sh
    export LC_CTYPE=zh_CN.UTF-8
    
    export PATH=$PATH:/usr/local/svn/bin:/home/subversion/svn/docs/hooks/:
    REPOS="$1"
    REV="$2"
    
    SENDTO="aaa@163.com,bbb@qq.com"
    # Send it to these people, calling the script we created above
    /home/subversion/svn/docs/hooks/svn_sendemail_commit.sh "$REPOS" "$REV" "$SENDTO"
    • 自动sendmail服务
    #service sendmail restart
    #chkconfig sendmail on

    注意,如果sendmail服务启动很慢,很可能是因为解析本机的域名慢,需要修改/etc/hosts文件。添加: 192.0.1.2  svnhost. svnhost(主机名后面一定要加“."啊)

    • 测试发送邮件
    #cat /etc/passwd |mail -s "test mail" xxx@163.com
  • 相关阅读:
    css中关于div中文本垂直居中的问题。
    点击弹出列表内容
    html+css+js实现滑动导航条(转载)
    在事件触发的时候,有时我们需要一些模拟用户行为的操作。例如:当网页加载完毕后 自行点击一个按钮触发一个事件,而不是用户去点击。
    活动倒计时案例
    javascript操作css实现弹出对话框
    PHP在不同页面之间传值的三种常见方式
    实现form表单提交到服务器,并且在将表单内容返回到该页面
    简单的百度预测搜索功能(php+jQuery+js+ajax)
    Eclipse4.6的一些基本操作及环境搭配
  • 原文地址:https://www.cnblogs.com/snailshadow/p/7999486.html
Copyright © 2011-2022 走看看