我有一个post提交挂钩,它将svn日志保存为XML文件。接下来我必须进行格式化,以表格式报告的形式显示数据,其中包含以下详细信息: 1)工作单号 2)文件名 2)文件路径 3)修订号 4)用户 5)提交时间
此报告需要每天下午5点通过电子邮件发送给小组。 我需要一些示例代码来帮助。
答案 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,重新格式化它,然后通过电子邮件发送它。