近来被要求做个基于VSS6.0的自动邮件发送程序,功能是要把一天内所有指定项目的变更情况汇总后进行发送。之前从来没有接触过VSS API的使用,MSDN上查了半天也没发现有这功能的API,网上这方面的资料也是少得可以了,不过还是找到两个,一个是采用bat进行的,一个是现成的软件vssplus。
----------
先来说说采用bat的(摘自 http://duron2.spaces.live.com/blog/cns!7929628afd7b5ae2!198.entry)
在vss项目的option里设置journal.log:\\ip\<project>\journal.log
编写发邮件的脚本(脚本里要调用nc.exe来发邮件)定时运行:
这个是相当的简单了,写个bat,设置上相应的参数后保存,定时运行就好,发邮件部分是OK了,只是发送的文件可能还要再做相关的处理,毕竟看log还是有些不方便,看来还是要用VSS的API扩展功能。
----------
还有一个是现成的软件vssplus,开源的,功能说明可以看 http://web.asai.com.cn/products/vssplus/function/
主要功能:
(1)自动下载最新文件到指定的目录
根据用户配置,VssPlus可以将VSS服务器中文件的最新版本下载到指定目录。
◆通过目录共享,用户不使用VSS客户端也可以很方便读取到下载后的最新文件;
◆通过架设FTP、WEB等方式,用户可以远程读取到下载后的最新文件;
(2)定期对文件进行检索,并将检索结果列表发送到指定邮件根据用户配置,VssPlus可以对VSS中的文件进行检索,并将符合检索选项的文件列表发送到指定的邮件地址。通过该功能,用户可以
◆及时了解文件的变更情况;
◆根据变更列表进行Code Review;
◆可以及时获取最新版本的文件;
◆可以了解哪些人员在check in文件时未填写评论(Comment);
(3)定期生成报告根据用户配置,VssPlus将为指定目录下的每个文件生成每日报告,详细记录各个文件的变更履历:变更时间、变更者、变更原因,报告以html方式提供,用户可以将其存放在web目录,这样通过网站就可以及时了解文件的变更情况。
(4)手动检索提供可视化检索界面,用户可以手动配置检索选项,对VSS的文件进行检索,并将检索结果列表导出到指定文件。
看起来是相当不错,第2点就是我要的功能,在 http://sourceforge.net/projects/vssplus/ 下到了软件,最新的版本是1.1.002,但没找到源代码,从说明上看应该是开源的,不知道是不是他们放上去时没有一起放上,刚发了邮件与其公司联系,不知道之后会不会放上去。不过对我来说,可能直接用这个就行了,就算不是开源的也是免费的,只是想看看其源码中的实现方式。
在本地上安装并进行了简单的试用,应该说不是很难使用的软件,里面也有一份很详细的使用说明,要注意下是先装EmailAgent。程序上提供了相当详细的设定方式,比先前自己设想的要复杂的多,但使用上还是比较直观的。只是其主要是对vss的扩展吧,对vss只能进行查看和get操作,要是能直接在上面进行checkout、checkin等操作的话,就可以直接用这个来操作vss了。
EmailAgent这个程序应该是把邮件发送做成了个系统服务,这点倒是不错,应该可以用在其它程序上,从程序的运行上看,应该是通过生成特定的包含邮件信息的XML文件,再通过操作未发送、已发送和发送失败三个文件夹来实现的,这个邮件的XML文件应该是直接序列化出来的,整个实现应该是一定时间间隔的轮询来实现的,期待源代码。
总的来说,关于VSS的邮件发送的功能,要是只是简单发送某个文件(就像上面说的log)而已,写个bat可能更加简单也更快些,不用安装什么。如果要功能更加强大的邮件发送功能的话,vssplus倒是可以拿来试试,只是不知道稳定性怎么样,这就要用时间来衡量了。
----------
先来说说采用bat的(摘自 http://duron2.spaces.live.com/blog/cns!7929628afd7b5ae2!198.entry)
在vss项目的option里设置journal.log:\\ip\<project>\journal.log
编写发邮件的脚本(脚本里要调用nc.exe来发邮件)定时运行:
echo ehlo cn-dos>nc.conf
echo AUTH LOGIN>>nc.conf
rem 用户名Base64编码
echo coded-username>>nc.conf
rem 密码Base64编码
echo code-password>>nc.conf
rem "<" 前使用了转义符 "^"
echo mail from: ^<username@aaa.com^>>>nc.conf
echo rcpt to: ^<rpt@bbb.com^>>>nc.conf //多个收信人另加一行
echo data>>nc.conf
echo From: username@aaa.com>>nc.conf //此处地址只是显示用
rem 收信人
echo To: rcpt@cbbb.com;rpt2@ccc.com>>nc.conf //此处地址只是显示用
echo Subject: vss-doc文挡变更>>nc.conf
echo MIME-Version: 1.0>>nc.conf
echo Content-Type: text/plain>>nc.conf
rem 空一行
echo.>>nc.conf
fc d:\VSS_pj1\journal.log d:\VSS_pj1\journal-old.log>>nc.conf
rem 将现在journal.log的拷贝一份
copy /y d:\VSS_pj1\journal.log d:\VSS_pj1\journal-old.log
echo .>>nc.conf
echo quit>>nc.conf
rem 检查nc.conf 里有没有“找不到相异处”字符串,没有(也就是文件有改变就发信)
rem smtp服务器 192.168.1.3 端口 25
find "找不到相异处" nc.conf
if ERRORLEVEL = = 1 c:\nc -nvv 192.168.1.3 25 < nc.conf
echo AUTH LOGIN>>nc.conf
rem 用户名Base64编码
echo coded-username>>nc.conf
rem 密码Base64编码
echo code-password>>nc.conf
rem "<" 前使用了转义符 "^"
echo mail from: ^<username@aaa.com^>>>nc.conf
echo rcpt to: ^<rpt@bbb.com^>>>nc.conf //多个收信人另加一行
echo data>>nc.conf
echo From: username@aaa.com>>nc.conf //此处地址只是显示用
rem 收信人
echo To: rcpt@cbbb.com;rpt2@ccc.com>>nc.conf //此处地址只是显示用
echo Subject: vss-doc文挡变更>>nc.conf
echo MIME-Version: 1.0>>nc.conf
echo Content-Type: text/plain>>nc.conf
rem 空一行
echo.>>nc.conf
fc d:\VSS_pj1\journal.log d:\VSS_pj1\journal-old.log>>nc.conf
rem 将现在journal.log的拷贝一份
copy /y d:\VSS_pj1\journal.log d:\VSS_pj1\journal-old.log
echo .>>nc.conf
echo quit>>nc.conf
rem 检查nc.conf 里有没有“找不到相异处”字符串,没有(也就是文件有改变就发信)
rem smtp服务器 192.168.1.3 端口 25
find "找不到相异处" nc.conf
if ERRORLEVEL = = 1 c:\nc -nvv 192.168.1.3 25 < nc.conf
这个是相当的简单了,写个bat,设置上相应的参数后保存,定时运行就好,发邮件部分是OK了,只是发送的文件可能还要再做相关的处理,毕竟看log还是有些不方便,看来还是要用VSS的API扩展功能。
----------
还有一个是现成的软件vssplus,开源的,功能说明可以看 http://web.asai.com.cn/products/vssplus/function/
主要功能:
(1)自动下载最新文件到指定的目录
根据用户配置,VssPlus可以将VSS服务器中文件的最新版本下载到指定目录。
◆通过目录共享,用户不使用VSS客户端也可以很方便读取到下载后的最新文件;
◆通过架设FTP、WEB等方式,用户可以远程读取到下载后的最新文件;
(2)定期对文件进行检索,并将检索结果列表发送到指定邮件根据用户配置,VssPlus可以对VSS中的文件进行检索,并将符合检索选项的文件列表发送到指定的邮件地址。通过该功能,用户可以
◆及时了解文件的变更情况;
◆根据变更列表进行Code Review;
◆可以及时获取最新版本的文件;
◆可以了解哪些人员在check in文件时未填写评论(Comment);
(3)定期生成报告根据用户配置,VssPlus将为指定目录下的每个文件生成每日报告,详细记录各个文件的变更履历:变更时间、变更者、变更原因,报告以html方式提供,用户可以将其存放在web目录,这样通过网站就可以及时了解文件的变更情况。
(4)手动检索提供可视化检索界面,用户可以手动配置检索选项,对VSS的文件进行检索,并将检索结果列表导出到指定文件。
看起来是相当不错,第2点就是我要的功能,在 http://sourceforge.net/projects/vssplus/ 下到了软件,最新的版本是1.1.002,但没找到源代码,从说明上看应该是开源的,不知道是不是他们放上去时没有一起放上,刚发了邮件与其公司联系,不知道之后会不会放上去。不过对我来说,可能直接用这个就行了,就算不是开源的也是免费的,只是想看看其源码中的实现方式。
在本地上安装并进行了简单的试用,应该说不是很难使用的软件,里面也有一份很详细的使用说明,要注意下是先装EmailAgent。程序上提供了相当详细的设定方式,比先前自己设想的要复杂的多,但使用上还是比较直观的。只是其主要是对vss的扩展吧,对vss只能进行查看和get操作,要是能直接在上面进行checkout、checkin等操作的话,就可以直接用这个来操作vss了。
EmailAgent这个程序应该是把邮件发送做成了个系统服务,这点倒是不错,应该可以用在其它程序上,从程序的运行上看,应该是通过生成特定的包含邮件信息的XML文件,再通过操作未发送、已发送和发送失败三个文件夹来实现的,这个邮件的XML文件应该是直接序列化出来的,整个实现应该是一定时间间隔的轮询来实现的,期待源代码。
总的来说,关于VSS的邮件发送的功能,要是只是简单发送某个文件(就像上面说的log)而已,写个bat可能更加简单也更快些,不用安装什么。如果要功能更加强大的邮件发送功能的话,vssplus倒是可以拿来试试,只是不知道稳定性怎么样,这就要用时间来衡量了。
转载于:https://blog.51cto.com/stupiddog/160502