4

サブバージョン 1.6.12 サーバーでポストコミット フックを設定して、コミット時に通知メールを送信しようとしています。

私はすでにスクリプト mailer.py (utils フォルダーの Subversion チームによって提供されます) を基本構成 (各コミット後にメールを送信するだけ) で使用しており、うまく機能します。

でも今は/tags/フォルダにコミットがあるときだけメールを送りたい。

これは私の標準的な mailer.conf です (うまくいきます):

[general]
smtp_hostname = xxx.xxx.xxx.xxx

[defaults]
from_addr = myemail@domain.tld
to_addr = myemail@domain.tld

そして、これは私が /tags/ のみのメール用に設定しようとしたものです:

[general]
smtp_hostname = xxx.xxx.xxx.xxx

[defaults]
from_addr = myemail@domain.tld
to_addr = myemail@domain.tld
for_paths = .*/tags/.*

しかし、それが機能しないため、構成を誤解しているようです: すべてのコミットでメールを受け取ります (タグの有無にかかわらず)

何か案が?ありがとうございました。

4

3 に答える 3

4

There isn't really a good way to do this. mailer.py is designed so that any commit that isn't matched to another group goes to the defaults group.

The documentation in mailer.conf.example hints at this but doesn't really explain it very well:

The options specified in the [defaults] section are always selected. The presence of a non-matching for_repos has no relevance. Note that you may still use a for_repos value to extract useful information (more on this later). Any user-defined groups without a for_repos, or which contains a matching for_repos, will be selected for potential use.

The subset of user-defined groups identified by the repository are further refined based on the for_paths option. A group is selected if at least one path(*) in the commit matches the for_paths regular expression. Note that the paths are relative to the root of the repository and do not have a leading slash.

What is says for for_repos also applies to for_paths with respect to the defaults group. I.E. that that for_paths is only useful for variable extraction.

One option without making any code changes would be to set your to_addr in your [defaults] to an address like devnull@example.com which you just throw away. Then set a different group up with a different to_addr that will actually be delivered someplace.

If you're willing to modify your mailer.py a tad you can avoid this by commenting out the following two lines in the which_groups function of the Config class:

if not groups:
  groups.append((None, self._default_params))

As a Subversion developer long term I think we should add an option to mailer.py to request that no mail be generated by the defaults section. Additionally, we should fix the documentation to be clearer about this behavior.

于 2013-02-20T01:18:48.240 に答える
0

それ以外の:

for_paths = .*/tags/.*

これを試して:

for_paths = ^tags($|.*)

これは、タグ dir がリポジトリのルートにあることを前提としています。

プロジェクトの下にタグがある場合は、次のようになります

for_paths = ^<project name>/tags($|.*)
于 2013-05-23T14:30:53.173 に答える
0

最後に、utils フォルダーで使用可能な別の通知スクリプトを使用して問題を解決しました (非推奨であっても): commit-email.pl

コミット後のフックでこのように使用すると、期待どおりに動作します。

REPOS="$1"
REV="$2"

LC_ALL=C /usr/share/subversion/hook-scripts/commit-email.pl "$REPOS" $REV -m "tags/.*" -s "[TAGS]" --from noreply@domain.tld myemail@domain.tld

しかし、誰かが mailer.py で同じことを行うための正しい構成を持っている場合、私はまだ興味があります!

于 2012-07-04T12:29:51.727 に答える