给svn发送电子邮件每日提交报告

时间:2011-10-26 11:31:20

标签: xml svn tortoisesvn

我有一个post提交挂钩,它将svn日志保存为XML文件。接下来我必须进行格式化,以表格式报告的形式显示数据,其中包含以下详细信息: 1)工作单号 2)文件名 2)文件路径 3)修订号 4)用户 5)提交时间

此报告需要每天下午5点通过电子邮件发送给小组。 我需要一些示例代码来帮助。

3 个答案:

答案 0 :(得分:2)

没有任何理由使用提交后挂钩,因为您可以使用svn log -v --xml获取数据。您可以按日期要求修改;例如,svn log -v --xml -r "$(date +'{%Y-%m-%d}'):HEAD"获取今天的修订版。还要记住,svn log可以是一个URL而不是本地签出。

您熟悉的任何编程语言肯定都有XML解析库,您可以使用它将XML转换为报告。

然后您只需要安排每天调用一次您的程序。在Unix上,你使用cron。在Windows上,您可以使用任务计划程序。

除此之外,你要求的是一些危险的东西,“为我写代码”。

答案 1 :(得分:2)

这完全取决于您使用的语言。

许多语言都有用于读取XML文件的模块。例如,Perl具有XML::Simple模块。

如果这是每天下午5点您的Subversion存储库所需的每日报告,那么最好只使用某种调度软件在下午5点运行一次报告。在Unix系统上,您可以使用cron守护程序来安排系统运行脚本。在Windows上,您可以使用Schedule Task Wizard

运行报告非常简单。所有你需要的是这样的:

svn log -v '{'$YESTERDAY'}':HEAD http://path/to/repository

您必须计算$YESTERDAY是什么,并将其置于YYYYMMDD格式,并且您有报告!

你如何得到昨天的约会?取决于您的编程语言。大多数操作系统将日期存储为 epoc 的秒数(在Unix中,它是1970年1月1日)。您使用编程语言的日期例程。

这将在变更集顺序中列出,其中包含每个变更集下更改的文件列表。如果您需要不同的格式,可以使用--xml开关,并以XML格式获取报告。这个XML输出的格式很简单,并且在结构上非常规则,你甚至可以在不使用XML解析模块的情况下解析它。

除此之外我无法给你太多帮助。我不知道操作系统,您使用的语言,甚至您在报告中所需的确切内容。我可以告诉你的是,你不需要提交后挂钩 - 只需在适当的时间使用正确的参数运行svn log,并在几分钟内让你的报告准备好邮寄出来

而且,由于这是使用svn,所以您只需要Subversion客户端。您甚至不必在特定计算机上生成此报告,只要该计算机具有Subversion命令行客户端(可从许多位置下载),并且可以指定何时可以运行报告。

答案 2 :(得分:1)

我认为SVN挂钩是这项工作的错误任务。毕竟只有在每次提交之后才会触发(如果你每天有数百次提交怎么办?如果没有人在下午5点左右提交怎么办?)。相反,我会在每天下午5点写一个cron作业(linux)或计划任务(windows)。您可以使用存储库中的svn command line tools to query the log,重新格式化它,然后通过电子邮件发送它。