如何在SVN中将多个提交添加到一个Post-Commit HOOK中?

时间:2009-07-28 06:16:52

标签: svn email notifications post-commit

我已经成功实现了提交后挂钩的提交后电子邮件通知。现在我正在考虑一个更大的问题,我不希望钩子为每次提交发送电子邮件。有没有办法使用钩子可能将电子邮件的内容写入文本文件,并可能使用另一个钩子或东西发送文本文件?

我基本上想发送一封包含多次提交信息的电子邮件。

感谢, 奥德。

2 个答案:

答案 0 :(得分:3)

首先,您必须决定何时确实要发送电子邮件:

  1. 每十次提交一次?
  2. 午夜?
  3. 标记时?
  4. 然后,您应该可以根据需要轻松实施方案:

      提交后挂钩中的
    1. :仅在revision number % 10 == 0
    2. 时发送电子邮件
    3. 创建一个cron作业
    4. 提交后挂钩中的
    5. :创建标记时检测
    6. 您可以使用svn logsvn diff -r FROM:TO选项,按日期或修订号收集所需信息。有关更多信息,请参阅the svnbook

答案 1 :(得分:1)

您可以修改提交后的电子邮件发件人脚本,以便在一些提交后发送电子邮件(例如,修订号是5的倍数)

为了帮助编写脚本,您可以使用svnlook来获取以前的修订日志。

这是我编写的向开发人员发送短信的Python脚本的一部分:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys, urllib, os
from subprocess import *

repo = sys.argv[2]
rev = sys.argv[3]

cmdlog = 'svnlook log -r %s %s'%(rev, repo)
cmdauthor = 'svnlook author -r %s %s'%(rev, repo)
log = Popen(cmdlog, stdout=PIPE, shell=True).stdout.read().strip()
author = Popen(cmdauthor, stdout=PIPE, shell=True).stdout.read().strip()

在后提交文件中

#!/bin/bash

export LANG=en_US.utf8
REPOS="$1"
REV="$2"

./sms.py commit $REPOS $REV

您可以参考此示例,通过命令 svnlook

从svn存储库获取日志信息