Windows下的SVN通过blat(开源的)邮件通知

参考自:

http://bbs.iusesvn.com/viewthread.php?tid=2893&highlight=%2Bgo2cxg

 

有位大哥写了http://bbs.iusesvn.com/thread-662-1-1.html 实现邮件通知功能 配置比较麻烦
一切从简 往下看~!!
嘿嘿~!!为了打造一个全自动 超只能的SVN而不懈努力哈
一直在寻找好的邮件通知的工具和脚本。很辛苦~呵呵。找了很多,不凑效。
偶尔发现一款小工具blat,是一款开源软件,主页:http://www.blat.net/

下载地址:http://sourceforge.net/projects/blat/files/

 

解压缩后放到%windir%/system32的文件夹里面
就可以直接调用了
发送邮件的方式很简单

E:\blat>blat e:/blat/body.txt -to <a target=_blank href="mailto:mymail@qq.com">mymail@qq.com</a> -base64 -charset utf-8 -subje
ct "test" -server smtp.qq.com -u mymail -pw mypassword


邮件内容的文件。这个很有用。你可以把你需要发送的内容放到里面去

-to ***@tom.com
收件人列表,多个人用逗号隔开 当然可以加-cc抄送 -bcc 密送选项

-base64 -charset Gb2312
一些格式字符的配置 可以参见附件里面 很详细
-subject "测试"
邮件主题
-server smtp.***.com
smtp服务器的地址

-u user -pw password
需要登录用的用户名和密码 当然 如果公司服务器不需要验证 留空

 

 如果用visualSVN Server,post-commit脚本拷到如图这个位置:

下面把我的post-commit.bat的内容贴出来

还有这里的sed命令是Linux下面的Shell命令
大家可以安装cygwin(http://www.cygwin.cn/site/install/),把%cygwin%/bin添加到%PATH%里面 就可以随意使用sed grep cut等灵活的Linux下面的命令了。

当然大家可以灵活修改这些脚本。可以实现锁定通知,解锁邮件通知等等功能。这些都是小Case了。

 

我的配置例子:

设置发送邮箱命令行:

blat -install smtp.163.com(服务器) bill@163.com(邮箱) -u mymailname(账号) -pwd mypassword(密码)

发邮件命令行:

blat d:/blat/body.txt -to abc@tom.com -base64 -charset utf-8 -subject "test" -server smtp.163.com -u bill -pw myPassword

或者

blat e:/blat/body.txt -to myname@qq.com -base64 -charset utf-8 -subject "test" -server smtp.qq.com -u myname -pw mypassword

 

bill的post-commit.bat的内容

@echo on

set REPOS=%1
set REV=%2
set RD=%RANDOM%
rem ::这个是产生随机数,为的是不要重复文件名。避免发生提交冲突
rem set COMMIT_USER_=echo C:\"Program Files (x86)"\"VisualSVN Server"\bin\svnlook author %REPOS%

SET AUT_FILE=G:\blat\INFO_%RD%-AUTHOR-%REV%
C:\"Program Files (x86)"\"VisualSVN Server"\bin\svnlook author -r %REV% %REPOS%>%AUT_FILE%
FOR /F %%A IN (%AUT_FILE%) DO SET AUTHOR=%%A

C:\"Program Files (x86)"\"VisualSVN Server"\bin\svnlook info %REPOS% > G:\blat\INFO_%RD%.txt
rem ::获取执行提交的用户 时间 以及日志信息等等

echo. >>G:\blat\INFO_%RD%.txt
echo ********************以下是提交内容******************** >>G:\blat\INFO_%RD%.txt
rem ::文本处理基本操作
echo. >>G:\blat\INFO_%RD%.txt

echo ******************** 改变的文件 ******************** >>G:\blat\INFO_%RD%.txt
C:\"Program Files (x86)"\"VisualSVN Server"\bin\svnlook changed %REPOS% >> G:\blat\INFO_%RD%.txt
rem ::获取执行提交的用户更改的文件
echo. >>G:\blat\INFO_%RD%.txt
echo ******************改变的代码请看附件****************** >>G:\blat\INFO_%RD%.txt

echo ******************** 改变的代码 ******************** >>G:\blat\INFO_%REV%_diff.txt
C:\"Program Files (x86)"\"VisualSVN Server"\bin\svnlook diff %REPOS% >> G:\blat\INFO_%REV%_diff.txt
rem ::获取执行提交的用户更改的文件

rem rem c:\cygwin\bin\sed "1 i\Modified:" G:\blat\INFO_%RD%_1.txt >> G:\blat\INFO_%RD%.txt
rem ::文本处理基本操作

c:\cygwin\bin\unix2dos G:\blat\INFO_%REV%_diff.txt

rem ::sed "3 i\COMMIT LOG MESSAGE :" G:\blat\INFO_%RD%_1.txt > G:\blat\INFO_%RD%_2.txt ::文本处理基本操作

g:\blat\blat G:\blat\INFO_%RD%.txt -to abc@abc.com,dfg@dfg.com -attach G:\blat\INFO_%REV%_diff.txt -base64 -charset Gb2312 -subject "Svn_T3_Commit_User_%AUTHOR%_Version_%REV%" -server smtp.163.com

del G:\blat\*%rd%*.txt
del G:\blat\*%REV%*.txt
del %AUT_FILE%

exit 0

 

高人的post-commit.bat的内容

 

在Dos测试方法(可以保存为bat批处理文件执行):

set REPOS=F:\Repositories\A10_4.0_v1.5
set REV=41
set RD=%RANDOM%
SET AUT_FILE=G:\blat\INFO_%RD%-AUTHOR-%REV%
C:\"Program Files (x86)"\"VisualSVN Server"\bin\svnlook info %REPOS% > G:\blat\INFO_%RD%.txt
C:\"Program Files (x86)"\"VisualSVN Server"\bin\svnlook diff %REPOS% >> G:\blat\INFO_%REV%_diff.txt 
g:\blat\blat G:\blat\INFO_%RD%.txt -to <pre class="java" name="code" snippet_file_name="blog_20131211_1_9437458" code_snippet_id="107586">liuyihui8<span style="font-family:Arial, Helvetica, sans-serif;">@qq.com -attach G:\blat\INFO_%REV%_diff.txt -base64 -charset Gb2312 -subject "Svn_A10_4.0_v1.5_Commit_User_%AUTHOR%_Version_%REV%" -server smtp.163.com -u liuyihui8 -pwd password
</span>
 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值