2009-07-28 3 views
0

Я успешно внедрил почтовое уведомление после фиксации для крюка после фиксации. Теперь я смотрю на большую проблему, я не хочу, чтобы крючок отправлял электронное письмо для каждой фиксации. Есть ли способ использовать крюк, чтобы, возможно, написать содержимое письма в текстовый файл и, возможно, использовать другой крючок или что-то еще, чтобы отправить текстовый файл?Как добавить несколько коммитов в SVN в один Post-Commit HOOK?

В основном я хочу отправить электронное письмо с информацией нескольких коммитов.

спасибо, Oded.

ответ

3

Во-первых, вы должны решить, когда вы на самом деле хотите отправить по электронной почте:

  1. Каждый десятый совершить?
  2. В полночь?
  3. При маркировке?

Тогда вы должны быть в состоянии легко реализовать схему работать, как вам нужно:

  1. в пост фиксации крюк: только отправить по электронной почте, когда revision number % 10 == 0
  2. создать хрон
  3. в пост-фиксации: обнаружить при создании тега

Вы можете использовать svn log и svn diff с опцией -r FROM:TO для сбора необходимой информации по дате или номерам ревизий. См. the svnbook для получения дополнительной информации.

+0

Электронная почта, которую я хочу отправить, должна содержать всю информацию обо всех коммитах ... не пятую или 10th .... – Oded

+0

Итак, напишите содержимое в файл при каждой фиксации и отправьте файл на 10-ое коммитирование. –

+1

Или используйте «svn log» и «svn diff», чтобы получить необходимую информацию. –

1

Вы можете изменить сценарий после фиксации электронной почты отправителя для отправки по электронной почте после того, как несколько фиксаций (например, номер ревизии кратна 5)

Чтобы написать сценарий, вы можете использовать svnlook для выборки предыдущей ревизии журналы.

Вот часть сценария Python Я написал для отправки SMS разработчиков:

#!/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 

Вы можете обратиться к этому примеру, чтобы получать информацию журнала из svn по команде svnlook