Windows SVN变化邮件通知(Python2.7实现)
1,新增文件post-commit.bat
内容:
rem REPOS-PATH (the path to this repository)
set REPOS=%1
rem REV (the number of the revision just committed)
set REV=%2 set HOOK_DIR=F:/Repositories/版本库名/hooks
set PYTHON_BIN=C:/Python27/python.exe
%PYTHON_BIN% %HOOK_DIR%/sendEmail.py %REPOS% %REV%
放在F:/Repositories/版本库名/hooks下
2,安装python2.7(已安装则跳过)
去官网下地2.7的版本http://www.python.org/getit/
3,新增sendEmail.py
#coding: utf-8
import sys
import os
import smtplib
from email.mime.text import MIMEText
from email.header import Header mail_host = 'smtp.qq.com' #发送邮件的smtp地址
mail_user = '****@qq.com' # 发送通知邮件的用户名
mail_pass = '****' # 用户的密码
me = 'SVN Service' + '<' + '****' + '@' + 'qq.com' + '>' #发送邮件人的地址标识
to_list = ['****@qq.com'] # 收件人 html_template = """
<html>
<h2 style="color:#FFFFFF; background: #008040;">基本信息</h2>
<div> <b>版本库:</b>
<a href="svn:%s">%s</a>
</div>
<div> <b>版本号:</b>%s
</div>
<div>
<b>提交者:</b>%s
</div>
<div>
<b>提交时间:</b>%s
</div>
<h2 style="color:#FFFFFF; background: #4682B4;">提交说明</h2> <font size="4" color="#BF6000"><xmp>%s</xmp></font>
<h2 style="color:#FFFFFF; background: #5353A8;">文件清单</h2>
<xmp>%s</xmp>
<hr>
<center>
☆ Powered by
<a href="http://garyelephant.me">Gary</a>
</center>
<center>
☆ Inspired by
<a href="http://crearo-sw.blogspot.com">CREARO-SW</a>
</center>
</html>
""" def get_repo_name(repo):
return os.path.basename(repo) def get_author(repo, rev):
"""svnlook author -r REV REPOS 获得提交者
"""
cmd = '%s author -r %s %s' % (svnlook_bin_path, rev, repo)
output = os.popen(cmd).read()
return output def get_date(repo, rev):
"""svnlook date -r REV REPOS 获得提交时间
"""
cmd = '%s date -r %s %s' % (svnlook_bin_path, rev, repo)
output = os.popen(cmd).read()
return output def get_log(repo, rev):
"""svnlook log -r REV REPOS 获得提交日志
"""
cmd = '%s log -r %s %s' % (svnlook_bin_path, rev, repo)
output = os.popen(cmd).read()
return output def get_file_list(repo, rev):
"""svnlook changed -r REV REPOS 获得发生变更的文件
"""
cmd = '%s changed -r %s %s' % (svnlook_bin_path, rev, repo)
output = os.popen(cmd).read()
return output def send_mail(msg, sender, to_list):
try:
s = smtplib.SMTP()
s.connect(mail_host)
s.login(mail_user,mail_pass)
s.sendmail(sender, to_list, msg.as_string())
s.close()
return True
except Exception, e:
print str(e)
return False def write_mail(sender, to_list, sub, content):
msg = MIMEText(content, _subtype = 'html', _charset='utf-8')
msg['Subject'] = sub
msg['From'] = sender
msg['To'] = ';'.join(to_list)
msg["Accept-Language"]="zh-CN"
msg["Accept-Charset"]="ISO-8859-1,utf-8"
return msg global svnlook_bin_path def write_mail_content(repo, rev):
"""
repo: repository
rev: revision
"""
repo_name = get_repo_name(repo)
author = get_author(repo, rev)
date = get_date(repo, rev)
log = get_log(repo, rev)
file_list = get_file_list(repo, rev)
content = html_template % (repo, repo_name, rev, author, date, log.decode("GBK").encode('UTF-8'), file_list.decode("GBK").encode('UTF-8'))
return content
if __name__ == '__main__':
svnlook_bin_path = '"C:/Program Files/VisualSVN Server/bin/svnlook.exe"' subject = 'SVN Commit Notification'
content = write_mail_content(sys.argv[1], sys.argv[2])
msg = write_mail(me, to_list, subject, content)
send_mail(msg, me, to_list)
同样放在F:/Repositories/版本库名/hooks
可以测试提交一个文件。效果如下:
制作好的文件下载:http://download.csdn.net/detail/yangwei19680827/6012623(需要更新文件中的版本库名称等)
鸣谢:http://blog.csdn.net/gaoyingju/article/details/8884276
Windows SVN变化邮件通知(Python2.7实现)的更多相关文章
- Windows SVN变更发送邮件通知(JAVA实现)
之前有过一篇python的实现http://blog.csdn.net/wiker_yong/article/details/10334967 1,新增文件post-commit.bat 内容: re ...
- 使用TheFolderSpy监控文件夹的变化-邮件通知
一.概述 当我们的文档或者代码文件发布在公网.共享文件夹中,其他用户具备访问或修改的权限时,就存在文档被覆盖或删除的分享.另外一个典型的场景,发布在Web服务器上的网页文件,在网站版本不更新的时间,服 ...
- Jenkins+Ant/maven+Svn实现自动化部署,编译,运行,测试结果自动邮件通知
Jenkins+Ant+Svn实现自动化部署,编译,运行,测试结果自动邮件通知
- Jenkins进阶系列之——01使用email-ext替换Jenkins的默认邮件通知
1 简述 众所周知,Jenkins默认提供了一个邮件通知,能在构建失败.构建不稳定等状态后发送邮件.但是它本身有很多局限性,比如它的邮件通知无法提供详细的邮件内容.无法定义发送邮件的格式.无法定义灵活 ...
- Jenkins系列之四——设置邮件通知
Jenkins持续集成,当我们自动打包部署完,我们可以发送一封邮件给相关的负责人.现介绍一下如何在Jenkins中配置实现邮件通知. 在Jenkins中配置实现邮件通知,Jenkins提供了两种方式的 ...
- 配置Redmine的邮件通知功能
依据<Windows下安装Redmine 2.5.2不全然指南 >一文,我们搭建主要的 Redmine 平台.如今是时候做进一步的配置了. 作为一个项目管理平台,必须能够通知项目成员有关项 ...
- Jenkins进阶系列之——02email-ext邮件通知模板
发现一个很好的邮件通知模板,根据我的需求定制了一些.分享一下. Default Subject: 构建通知:${BUILD_STATUS} - ${PROJECT_NAME} - Build # ${ ...
- Jenkins email-ext邮件通知模板
http://blog.csdn.net/houyefeng/article/details/51344337 示例 以html格式发送送如下内容:邮件内容为项目名称.构建次数.触发原因.构建日志前1 ...
- Jenkins 配置邮件通知
jenkins 是一个开源的自动化服务器.通过Jenkins,可以通过自动化加速软件开发过程.Jenkins管理和控制各种开发的生命周期过程,包括构建,文档,测试,包,阶段,部署,静态分析等等.您可以 ...
随机推荐
- 高仿qq聊天界面
高仿qq聊天界面,给有需要的人,界面效果如下: 真心觉得做界面非常痛苦,给有需要的朋友. chat.xml <?xml version="1.0" encoding=&quo ...
- 【转】Linux awk命令详解
简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...
- ssh登录失败处理步骤
如果登录失败而又找不到显示的原因,优先使用ssh -vT name@ip -p port 进行调试,查看所使用的key文件.ip.端口是否正确.然后再检查下面步骤:1.检查在对应用户名下是否有iden ...
- UGUI 过渡动画插件,模仿NGUI的Tween (转载)
最近在相亲,后来好朋友跟我说他写了一个好插件,于是我就把女朋友甩了,看看他的插件,可以在UGUI制作简单过渡动画. 我看了下是模仿NGUI的Tween, 我在筱程的基础上稍微改到人性化, 简单支持的让 ...
- 面向切面编程(AOP)的理解
在传统的编写业务逻辑处理代码时,我们通常会习惯性地做几件事情:日志记录.事务控制及权限控制等,然后才是编写核心的业务逻辑处理代码.当代码编写完成回头再看时,不禁发现,扬扬洒洒上百行代码中,真正用于核心 ...
- [HDU 1535]Invitation Cards[SPFA反向思维]
题意: (欧洲人自己写的题面就是不一样啊...各种吐槽...果断还是看晕了) 有向图, 有个源叫CCS, 求从CCS到其他所有点的最短路之和, 以及从其他所有点到CCS的最短路之和. 思路: 返回的时 ...
- Linux自动登陆的设置方法
前些天为了实现Linux自动登陆的方法,在网上查了很多资料,发现有不少方法,但网上有些方法的讲解不是特别清楚,或者已经过时.因此,特意整理了一下Linux自动登陆的设置方法.本文的测试环境为Cento ...
- [跟我学spring学习笔记][IoC]
IoC基础 什么是IoC Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想. ioc做什么 IoC容器帮对象找相应的依赖对象并注入,而不是由对象主动去找 ...
- linux学习记录 常用指令大全
1.开启关闭服务器(即时生效): service iptasbles start service iptasbles stop 2.在开启了防火墙时,做如下设置,开启相关端口, 修改/etc/sysc ...
- Linux 挂载命令 --mount
1.挂载光盘命令 mount : mount [-t vfstype] [-o options] device dir mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点 -t ...