5

ユーザーが特定のファイルに変更をコミットした場合にメールで通知されるように、ポスト コミット フックを追加したいと考えています。

誰かがこの例を見たことがありますか、それとも可能ですか?

以前にコミット前のフックを設定しましたが、それは私の知識の限界です。

4

3 に答える 3

6

githubにコミット後のフックがあり、これを正確に実行します。これにより、ユーザーは(管理者ではなく、変更を監視しているファイルと、これらの変更を送信する必要のあるメールアドレスを指定できます)。

これを私のpre-commit-kitchen-sinkフックと組み合わせて、ユーザーが自分のウォッチファイルのみを編集できるようにすることができます。フックスクリプトはPerlを使用しますが、非標準のモジュールを必要としないため、非常に使いやすいです。

各ユーザーは独自の監視ファイルを取得します。構文は非常に簡単です。

mail = david@gmail.com
file =**/build.xml
match = [Mm]akefile

このmail行は、通知を電子メールで送信したい場所です。私は複数のものを持つことができます。これfileは、私が見ているファイルのグロブ式(式の前面と背面に固定されている)です。このmatch行は類似しており、アンカーされていないPerl正規表現を使用しています。

監視ファイルは、指定したディレクトリのSubversionリポジトリに保存されます。これは、ユーザーが自分の時計を設定できることを意味します。pre-commit-kitchen-sinkフックを使用して、ユーザーが他のユーザーのウォッチファイルを変更できないようにすることができます。

[file You are only allowed to change their own watch files]
file =/watchfiles/**
permission = read-only
users = @ALL

[file You are only allowed to change their own watch files]
file = /watchfiles/<USER>.cfg
permission = read-write
users = @ALL

文字列はユーザ​​ーの<USER>IDとして解釈されます。


コミット後のフックを複数のファイルに設定したい場合、設定できますか?file = ab / build.xml、bb / cs.txt、cc/のようになどこれらのファイルのみをメールで通知したい

パターンごとに線を入れることができます。

 email = my@email.com
 file = **/ab/build.xml
 file = **/bb/cs.txt
 file = **/cc/*.*

globfileパターンは(ルートとして使用して)リポジトリのルートに固定されている/ため、フルパスを指定するか、を使用し**/てそのファイルへのパスを指定する必要があることに注意してください。

于 2011-09-19T18:35:42.840 に答える
0

ポストコミットで実行する PHP スクリプトをセットアップします。PHP スクリプトをかなりスマートに編集し、更新されたファイルに応じて特定のアクションを実行することができます。

/subversion/hooks/post-commit:

 REPOS="$1"
 REV="$2"
 MESSAGE=$(svnlook propget --revprop -r $REV $REPOS svn:log)
 CHANGES=$(svnlook changed -r $REV $REPOS)
 php /usr/share/subversion/hook-scripts/commit-email.php "$REPOS" "$REV" "$MESSAGE" "$CHANGES"

/usr/share/subversion/hook-scripts/commit-email.php:

 <?php
      //files updated will be in $_SERVER['argv'][4], you could expand it in to an a
      //array and search for what you need, and depending on what's found, send emails accordingly.
 ?>
于 2012-04-13T18:17:50.423 に答える