Linux 配置 SVN自动发送邮件

原创 2013年12月02日 15:39:19

公司游戏运营需要,新搭建了一个SVN并配置了一下提交自动发送邮件的功能,备忘一下几个关键步骤内容,供有用的同学参考哈


1、准备好安装包:

apr-1.3.8.tar.gz

apr-util-1.3.9.tar.gz

httpd-2.2.4.tar.gz

subversion-1.6.5.tar.gz

subversion-deps-1.6.5.tar.gz


2、安装apr和apr-util包

3、安装apache

        # tar –zvxf httpd-2.2.4.tar.gz
        # cd httpd-2.2.4
        # ./configure
        --prefix=/usr/local/apache
        --with-apr=/usr/local/apr
        --with-apr-util=/usr/local/apr-utl
        --enable-modules=so /* DSO模式安装apache (或 --enable-so)
        --enable-dav
        --enable-maintainer-mode
        -- enable-rewrite
        # make ; make install
        安装好后启动apache
        # /usr/local/apache/bin/apachectl –k start
        用浏览器查看http://localhost/,得到it works,说明apache已经配置成功了。

4、安装和配置 subversion
        #tar –zvxf subversion-1.4.5.tar.gz
        #tar –zvxf subversion-deps-1.4.5.tar.gz /*这两个自动解压成一个包 subversion-1.4.5
        #cd subversion-1.4.5
        #rm –rf apr
        #rm -rf apr-util
        注意:SVN 依赖的APR版本要正确。如果Apache为2.0.x,对应的APR版本应为0.9.x;Apache为2.2.x,对应的APR版本应为1.2.x。由于subversion-deps包里的APR是0.9.x的,因此编译svn时要删除从deps里解压出来的apr, apr-util,改而使用apache 2.2里提供的。(这里指定为开始安装的apr目录),这一点知识非常重要,自己之前多次安装都没成功,现在才明白是在这一点被卡住了,但最终还是被我解决了, 学习,和不断实践 会使你不断成长!
        #./configure
        --prefix=/usr/local/svn
        --with-apxs=/usr/local/apache/bin/apxs
        --with-apr=/usr/local/apr/bin/apr-1-config
        --with-apr-util=/usr/local/apr/bin/apu-1-config
        --with-ssl
        --with-zlib
        --enable-maintainer-mode
        #make
        #make install
        确定一下svn有没有安装成功
        #/usr/local/svn/bin/svnserve - -version

       会看到相关版本信息!
        完了再看看apache 的相关模块有没有加载!如下!
        LoadModule dav_svn_module modules/mod_dav_svn.so
        LoadModule authz_svn_module modules/mod_authz_svn.so

       开始建立版本库
        #svnadmin create /opt/svnrepo/test/*创建仓库"test"

        ls /svn/project/test /*查看有没有创建好,如果多了一些文件则说明版本库已经创建好

        配置提高svn版本库的安全性
        #chmod –R 700 /opt/svnrepo/test不让其他人有该目录的权限
        注意: 直接这么chmod会导致svn客户端无法访问,同时需要修改apache配置文件./conf/httpd.conf文件,(如果你的水平不够高的话,这一步可以先跳过,以免给自己找麻烦!等把服务完全搞定后再来进一步提高安全性) 在httpd.conf文件中有这么一段内容

        (我的系统在安装apache的时候,自动增加了apache用户和apache组,如果你系统没有这个用户和组,则请自己添加该用户和组)
        修改svn仓库的所有者
        #chown -R apache:apache /opt/svnrepo/test

5、配置apache支持svn

在httpd.conf内容最后面增加

#Svn Configuration
<Location /svn>
DAV svn
SVNParentPath /opt/svnrepo
AuthType Basic  
AuthName "Hello welcome to here"
AuthUserFile   /opt/svnrepo/upublish/conf/passwd.conf
AuthzSVNAccessFile /opt/svnrepo/upublish/conf/authz.conf
Require valid-user
</Location>

6、配置svn权限管理

        1 . 添加用户:
        # /usr/local/apache/bin/htpasswd –c /svn/passwd user1
        第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码,完成对用户的增加
        第二次添加用户不需要带 –c 参数 如:
        # /usr/local/apache/bin/htpasswd /svn/passwd user2

         2 . 权限分配:
        #vi /svn/auth.conf
        [groups]
        team_admin = zhangsan
        team_yunying = lisi,wangwu


     [/]
     @team_admin = rw
    # &joe = r
     # * =

     [upublish:/]
      @team_admin = rw
     * = r
     [upublish:/yunying]
    @team_admin = rw
    @team_yunying = rw
    * = r

7、配置邮件发送

     a:使用sendmail,安装sendmail服务

     b:修改/etc/mail/sendmail.mc 修改DAEMON_OPTIONS(`Port=smtp,Addr=10.10.209.44, Name=MTA')dnl 为本机ip

     c:修改/etc/mail.rc 增加内容

           set from=xxx@126.com smtp=smtp.126.com smtp-auth-user=xxx smtp-auth-password=123456 smtp-auth=login

     d:增加svn_email_commit.sh发送邮件脚本,内容如下:

#!/bin/bash
REPOS=$1
REV=$2
SENDTO=$3
SENDFROM=xxx@126.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

      e:修改post-commit脚本

#!/bin/sh
export LC_CTYPE=en_US.UTF-8

export PATH=$PATH:/usr/local/svn/bin:/opt/svnrepo/upublish/hooks:
REPOS="$1"
REV="$2"

SENDTO="aaa@126.com"
# Send it to these people, calling the script we created above
/opt/svnrepo/upublish/hooks/svn_email_commit.sh "$REPOS" "$REV" "$SENDTO"


8、自动sendmail服务

service sendmail start


10、可以测试

mail -s "test" bbb@126.com


相关文章推荐

SVN设置Hooks自动群发更新邮件

项目组成员不定时向SVN提交代码或数据,管理员不能确切掌握项目代码更新动态。SVN向我们提供了设置Hooks自动群发更新邮件的功能,当项目组成员向SVN提交数据时,在Hooks中指定的邮箱将会接收到S...

工作代码片段-svn提交并发送邮件

这段代码是我用来提交svn代码,同时给团队的所有成员发送邮件的脚本。 #!/bin/bash me=`whoami` mail="cnsworder@gmail.com ${me}" cmd=...
  • cnsword
  • cnsword
  • 2011年12月20日 13:14
  • 2476

SVN1.7.14上配置post_commit hooks,实现自动发邮件功能

操作系统是centos7. SVN1.7.16 的post-commit.tmpl中提供的mailer.cf文件需要安装python,很麻烦。所以仍旧使用sendmail 发送邮件...
  • w171066
  • w171066
  • 2016年05月11日 10:16
  • 967

linux下svn命令大全及为SVN加入Email通知

 1、将文件checkout到本地目录svn checkout path(path是服务器上的目录)例如:svn checkout svn://192.168.1.1/pro/domain简写:svn...

Linux 下定时提交SVN

Ubuntu下定时提交代码到SVN

linux下用mail发送邮件

利用外部邮箱发送邮件的方法  bin/mail会默认使用本地sendmail发送邮件,这样要求本地的机器必须安装和启动Sendmail服务,配置非常麻烦,而且会带来不必要的资源占用。而通过修改配置文...
  • wind19
  • wind19
  • 2009年12月17日 15:00
  • 55299

svn提交时,邮件通知问题解决的经验谈

svn可以实现在commit提交时,使用hook钩子功能,向指定的邮箱发送提交注释comment/log及内容变化的邮件,以方便对之进行监控。 具体的描述就是, 1.当某个账号提交代码/文档时,使用钩...
  • gaolu
  • gaolu
  • 2015年01月27日 15:34
  • 8495

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

svn强制提交注释规则及触发邮件通知

背景:公司的svn服务器上有很多的项目,很多时候,开发人员在提交代码的时候不填写注释或者随便填写,这不利于团队其他开发者了解code的变化,时间长了连自己也不清楚做了那些修改,出问题做代码回滚就更不知...
  • xuyaqun
  • xuyaqun
  • 2014年01月11日 15:18
  • 3175

Linux下 Apache+SVN 让用户自行修改SVN密码

默认在Linux下Apache+SVN没有提供用户修改密码功能,这里利用PHP脚本来为用户提供一种修改密码的方法。 第一步:用户在修改密码之前需要先登录,而登录的验证方法和访问SVN是一样的,在/et...
  • ssmile
  • ssmile
  • 2016年09月08日 10:50
  • 1638
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux 配置 SVN自动发送邮件
举报原因:
原因补充:

(最多只允许输入30个字)