原来配置过SVN版本控制在项目成员提交CODE的时候,会自动发邮件给团队成员,公司在使用GIT之后,同样有这样需求,如下是配置方法.
GIT的邮件通知是通过MSMTP和MUTT来发信的,所以首先需要配置MSMTP和MUTT环境。
1、 下载安装MSMTP
wget http://cdnetworks-kr-1.dl.sourceforge.net/project/msmtp/msmtp/1.4.24/msmtp-1.4.24.tar.bz2 tar jxvf msmtp-1.4.24.tar.bz2 cd msmtp-1.4.24 ./configure --prefix=/usr/local/msmtp make make install
ln /usr/local/msmtp/bin/msmtp /bin/msmtp |
查看MSMTP的配置文件目录,执行如下命令:
[root@bogon msmtp]# msmtp --version msmtp version 1.4.24 Platform: x86_64-unknown-linux-gnu TLS/SSL library: OpenSSL Authentication library: built-in Supported authentication methods: plain cram-md5 external login IDN support: enabled NLS: enabled, LOCALEDIR is /usr/local/msmtp/share/locale Keyring support: none System configuration file name: /usr/local/msmtp/etc/msmtprc #此为改软件的配置文件路径 User configuration file name: /root/.msmtprc
Copyright (C) 2010 Martin Lambers and others. This is free software. You may redistribute copies of it under the terms of the GNU General Public License <http://www.gnu.org/licenses/gpl.html>. There is NO WARRANTY, to the extent permitted by law. |
创建目录:
mkdir -p /usr/local/msmtp/etc/ |
创建配置文件
vi /usr/local/msmtp/etc/msmtprc defaults account duhaitao host mail.ecworld.net from gitmail@ecworld.net auth login user gitmail password pass tls off account default : gitmail logfile /var/log/msmtp.log |
2、 下载安装MUTT
此软件是在系统安装ISO里面找到的,也可以通过网上下载进行安装。
rpm –ihv mutt-1.4.2.2-3.0.2.el5.x86_64.rpm |
安装好之后,会在/etc目录下面生成/Muttrc文件,修改/etc/Muttrc文件:
# for add Muttr set sendmail="/usr/local/msmtp/bin/msmtp" set realname="Data Report" set editor="vi" set from=auto_mail@ecworld.com set envelope_from=yes |
一切就绪之后就可以测试是否成功。
echo 'test'|mutt -s "testabc" duhaitao@sian.com -c duhaitao@ecworld.net -a a.tgz
没有报错,就可以收到邮件了。
3、 Post-receive脚本下载
接下来下载GIT发送邮件脚本。下载地址为:
http://github.com/zma/usefulscripts/blob/master/script/post-receive
GIT的邮件发送是通过HOOKS目录下面的post-receive 实现的,每当有PUSH操作的时候,就会触发此脚本。
下载脚本,并放到$GIT_DIR/hooks/ 目录下面。$GIT_DIR是GIT库的主目录,在把脚本放到HOOKS目录之后,赋予它执行权限。
chmod a+x hooks/post-receive |
然后修改GIT库下面的config文件
添加:
[hooks] sendmail = /bin/msmtp emailprefix = "[GIT NOTICE]" showrev = "git show -C %s; echo" |
修改$GIT_DIR/description文件,邮件中的标题是这个文件的第一行内容,修改这个文件第一行为你项目的名字。
因为我们使用的是MUTT来发信息的,所以需要修改刚才下载的post-receive脚本。
把705行内容:
cat $email_tmp_file | mailx -S smtp="smtp://smtp.cse.ust.hk" -s "$emailsubject" -r $senderemail $recipients |
修改为:
cat $email_tmp_file | mutt -s "$emailsubject" git@ecworld.net |
其中git@ecworld.net为一个邮件别名,里面包括了所有开发成员的邮件。
修改完之后,在团队成员进行PUSH的时候,每个人就会收到邮件了,内容如下:
参数文档:
http://fclose.com/b/linux/1473/setting-up-git-commit-email-notification/