1

大規模なJavaプロジェクトを保持するリモートMercurial(Hg)リポジトリをセットアップしました。プロジェクトのpomファイルに加えられた変更を監視し、pomに変更が加えられたときに電子メールを受信したいと思います。

依存関係(したがってPOM)の変更の可能性を監視することだけに関心があるので、他のすべてのファイル変更を通知から除外したいと思います。Mercurialリポジトリ内の1つの個別ファイルの変更履歴をサブスクライブするためにJenkinsを使用するMercurial拡張機能または回避策はありますか?

4

2 に答える 2

2

通知拡張機能は、リポジトリの変更時に電子メールを送信します。

変更コンテキスト(セクション6を参照)を使用すると、変更セット内のファイルを反復処理できます。

これら2つをカスタムフックにまとめるのはかなり簡単です。コンテキストを確認し、特別なファイルが記載されている場合にのみメールを送信してください。

于 2012-04-04T12:50:43.287 に答える
0

@ Ed.ward

私は最近、特定のファイルが変更された場合にのみ通知するためにこれを行う必要がありました(通知拡張機能と変更コンテキストを組み合わせる)。独自のフックから通知フックを呼び出すには、hgextをインポートしてから、hgext.notify.hookを呼び出す必要があります。私のPythonの動作例:

import re, traceback
import hgext
def check_changegroup(ui, repo, hooktype, node=None, source=None, **kwargs):
    ui.note("Checking for files in %s with path: %s\n" % (repo.__class__.__name__, repo.root))
    file_match = ".*base.*" #ui.config('monitor_files', 'file_match')
    ui.note("file_match: %s\n" % file_match)
    file_match_re = re.compile(file_match, re.I)
    monitored_file_changed = False
    for rev in xrange(repo[node].rev(), len(repo)):
        changectx = repo[rev]       
        for f in changectx.files():
            if file_match_re.match(f):
                ui.note("  matched: %s\n" % f)
                monitored_file_changed = True
        if monitored_file_changed:
            ui.note("rev: %s from user: %s has changes on monitored files\n" % (rev, changectx.user()))
    if monitored_file_changed:
        ui.note("calling notify hook\n")
        try:
            hgext.notify.hook(ui, repo, hooktype, node, source)
        except Exception as exc:
            ui.warn(('%s error calling notify hook: %s\n') % (exc.__class__.__name__, exc))
            traceback.print_exc()
            raise
于 2017-02-09T17:21:44.757 に答える