svn+mailer.py+svnmanager 1 of 3
发布:Hekunharris | 发布时间: 2011年12月9日配置 subversion 1.4.2 + commit-email.pl
公司最近有部门因为工作需要,让我们MIS部门配合对svn做一次“小小”的升级改进。当
SVN里的某一个项目文件的发生版本变化的时候,系统自动发邮件到相关的工程师邮箱提
醒。
OK,动手,开搞!
印象中,在repository 里有个hooks的目录,里面全是脚本代码,其中有个post-
commit.tmpl 的文件是对客户端对文件commit后做监控的脚本。vi 开,在最后加上代码
------------------------------------------------------------
REPOS="$1"
REV="$2"
/xxx/commit-email.pl "$REPOS" "$REV" --from SVN-SYS@xxx.com xx_group@xxx.com -s
"Notification!!!"
------------------------------------------------------------
把文件改名 cp repos/xxx/hooks/post-commit.tmpl repos/xxx/hooks/post-commit.pl
网上下载了commit-email.pl并且放到/xxx/commit-email.pl下。
Of cause, baby. 你需要安装perl 先。
我依然淡定的vi 开commit-email.pl 文件,在开头一行鸟文映入眼帘:
------------------------------------------------------------
#This script is deprecated. The Subversion developers recommend
#using mailer.py xxxxxxxxxx
------------------------------------------------------------
怎么办? 过时了? No fashion!
不过我很淡定的用左手捋了捋头发(这个细节很小,但是很重要。因为我的hair-style 是
左分,用右手捋头发的话,看起来会非常的不协调,No fashion!),嘴角微扬,哼~
我不care。
It will works anyway!
反正邮件能发出来就Oh-yeah了。
修改文件:
------------------------------------------------------------
$smtp_server = 'xxxxxx'
my $svnlook = '/usr/bin/svnlook'
------------------------------------------------------------
其他都默认。
把commit-email.pl 设置成可执行 chmod 755 commit-email.pl
把权限赋予apahce, chown apache:apache commit-email.pl
Sorry baby, I nearly forget it.
chmod 755 repos/xxx/hooks/post-commit.pl 让它能执行。
好了,搞完了。测试下。
我在客户端修改文件提交后,只用了捋两次头发的时间,我的outlook 就提醒我收到了一
封署名 VN-SYS@xxx.com的邮件通知。
看起来很简单的样子。
一封email给同事以为解决问题了~~~~~但是,没有想到他们具体的需求是repository里面
的某一个项目下的某一个folder下的文件在发生版本变化的时候,Design team需要收到
email 的通知。
我看了commit-email.pl文件N遍,可能就是没有找到相关的设置。我打电话咨询了上海和
香港的MIS同事,可是他们没有弄过SVN server,遗憾。我给Design team 说可能不行,这
个只能针对以repository为单位来监控文件。
Design team的同事效率还真高!Forward给我很多邮件,关于日本和德国公司那边的SVN
server可以这么做。我有点不淡定了,如果给日本或德国MIS的去电话咨询这个“小”问题
,那就太丢国人面子了。再说估计他们也听不懂四川话。
放弃commit-email.pl吧。试试mailer.py!!!
按照说明,我从官网上下载了mailer.py 和其配置文件mailer.conf.example
当然,要先将mailer.py设置成为可执行文件,并且赋予apache。
chmod 755 mailer.py
chown apache:apache mailer.py && chown apache:apache mailer.conf.example
按照鸟文说明先测试下
python mailer.py
可恶的一行鸟文映入眼帘
You need 1.5.0 or higher of subversion of Python binding. (好像是这个意思)
检查下目前的svn版本
svnadmin --version
结果是1.4.2,红帽5自带的版本,2007年左右的老家伙了。必须要升级!!!
我已经不够淡定了,因为我是在用右手捋头发了。
SVN sever上有100多个G的重要资料,全是Design 部门的code. 如果升级出问题的话,我就
惨了。不行,安全第一,我得先做下试验,刚好前几天机房淘汰下一台64位的服务器,
装一个一样的64位的红帽5,从1.4.2的版本升级到1.6.11 的版本看看。
好吧,就这愉快的决定了。
安装很简单,一路next。
安装盘上有rpm包,就省了很多时间找源代码编译安装,保证服务器有http 已经安装。
安装subversion1.4 需要用到的文件和相关的依赖包有:
------------------------------------------------------------
subversion-1.4.2-2.el5.x86_64.rpm
subversion-devel-1.4.2-2.el5.x86_64.rpm
subversion-perl-1.4.2-2.el5.x86_64.rpm
mod_dav_svn-1.4.2-2.el5.x86_64.rpm
neon-0.25.5-5.1.x86_64.rpm
neon-devel-0.25.5.1.x86_64.rpm
sqlite-3.3.6-2.x86_64.rpm
sqlite-devel-3.3.6-2.x86_64.rpm
------------------------------------------------------------
安装完成后配置httpd.conf
因为已经包含/etc/httpd/conf.d/下的文件,所以其实不用在
------------------------------------------------------------
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
------------------------------------------------------------
1. 测试创建repository
------------------------------------------------------------
svnadmin create /repos/xxx
------------------------------------------------------------
2.配置apache
------------------------------------------------------------
<Location /repos>
DAV svn
SVNParentPath /repos
AuthType Basic
AuthName "Harris'testing"
AuthUserFile /repos/passwdfile
Require valid-user
AuthzSVNAccessFile /repos/accessfile
</Location>
------------------------------------------------------------
3.创建测试用户
------------------------------------------------------------
htpasswd -cm /repos/passwdfile test01
htpasswd -m /repos/passwdfile test02
------------------------------------------------------------
4.创建控制文件
------------------------------------------------------------
vi /repos/accessfile
[xxx:/]
test01 = rw
test02 = r
------------------------------------------------------------
5.开启服务
------------------------------------------------------------
/etc/init.d/httpd restart
------------------------------------------------------------
测试一下,在浏览器输入http://localhost/repos/xxx
奇了怪?怎么没反应?
Oh, I am sorry baby. 忘了给权限
------------------------------------------------------------
chown apache:apache /repos/passwdfile
chown apache:apache /repos/accessfile
------------------------------------------------------------
奇了怪?怎么还没反应?
Oh, I am sorry baby. 忘了关SELinux
------------------------------------------------------------
vi /etc/SELinux
设置为disable
------------------------------------------------------------
奇了怪?怎么还没反应?
Oh, I am sorry baby. 忘了设置iptables
------------------------------------------------------------
/etc/init.d/iptables stop
------------------------------------------------------------
OK! 测试通过了。
接下来该测试下升级了。
TO BE CONTINUE...
本文来自:白日梦工厂
- 相关文章:
发表评论
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。






