私はいつも、チェックイン(コミット)メールが、他の人がコードベース/リポジトリで行っている作業を追跡するのに非常に役立つことを発見しました。コミットごとに配布リストを電子メールで送信するようにSVNを設定するにはどうすればよいですか?
私はWindowsでクライアントを実行し、LinuxでApacheSubversionサーバーを実行しています。ただし、さまざまなプラットフォームに関する以下の回答は、他の人にも役立つ可能性があります。
私はいつも、チェックイン(コミット)メールが、他の人がコードベース/リポジトリで行っている作業を追跡するのに非常に役立つことを発見しました。コミットごとに配布リストを電子メールで送信するようにSVNを設定するにはどうすればよいですか?
私はWindowsでクライアントを実行し、LinuxでApacheSubversionサーバーを実行しています。ただし、さまざまなプラットフォームに関する以下の回答は、他の人にも役立つ可能性があります。
コミット後のフックを使用します。ここにガイドがあります。
各コミット後に電子メールを送信するサンプルRubyスクリプトは次のとおりです。commit-email.rb
スタンドアロンのSubversion通知ツール(Windowsのみ!) をご覧ください。コミット時に電子メールを送信することもできます。
VisualSVN サーバーには、便利なコミット電子メール通知フックがありVisualSVNServerHooks.exe
ます。色付きの差分をサポートし、コミットが特定のリポジトリ パスに影響する場合にのみコミット通知を送信できます。
「VisualSVNサーバーでの電子メール通知の構成」を参照してください。
どのプラットフォームですか?
Mac OS XIでは、 msmtpがインストールされ、リポジトリのフックの下にコミット後のスクリプトが作成されています。svn
(またはwww
)ユーザー用に.msmtprcファイルを設定する必要があります。
REPOS="`echo $1 | sed 's/\/{root of repository}//g'` "
REV="$2"
MSG=`/usr/local/bin/svn log -v -r HEAD https://localhost$REPOS`
/usr/local/bin/msmtp {list of recipients} <<EOF
Subject: SVN-Commit $REPOS#$REV
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8Bit
$MSG
EOF
ニーズに合わせて作成して{root of repository}
ください。{list of recipients}
ここスウェーデン(åäö)には特殊文字がいくつかあるため、UTF-8を使用していることに注意してください。
コミット後のフックについては、ここに関連する質問があります。個人的には、RSSフィードを取得できるものにメッセージを送信することを好みます。これは、コミットごとの電子メールが受信トレイをすぐに過負荷にするためです。
他の誰かが言ったように、「どのプラットフォーム」。Windowsでは、これを行うための無料のコマンドラインSMTPメーラーである「blat」を、コミット後および別のバッチファイルとともに使用しました。
ポストコミットは次のようになります:(別のバッチファイルを呼び出すだけです)
call d:\subversion\repos\rts\hooks\mail %1 %2
そして、mail.batは次のようになりました。
copy d:\subversion\repos\RTS\hooks\Commitmsg.txt %temp%\commit.txt
copy d:\subversion\repos\RTS\hooks\subjbase.txt %temp%\subject.txt
svnlook info -r %2 %1 >> %temp%\commit.txt
echo Revision %2 >> %temp%\commit.txt
svnlook changed -r %2 %1 >> %temp%\commit.txt
svnlook author -r %2 %1 >> %temp%\subject.txt
c:\utils\blat %temp%\commit.txt -t <me@my.email.com> -sf %temp%\subject.txt -server ServerName -f "SVN Admin <svn@my.email.com>" -noh2
SVNフックを作成する際の最大の落とし穴は、基本的に環境が設定されていない可能性があることです。つまり、exeパスや一時パスなどはありません。ただし、最近のSVNビルドでは改善されている可能性があります。
Linuxサーバーで3つのステップで実行しました:
メーリング リスト ( svn-notify@xy.com
) を作成し、リストにユーザーを追加します。
編集/path_to_your_svn/svn/hooks/svn-notify/mailer.conf
/path_to_your_svn/svn/hooks/post-commit
次の行をファイルに追加します。/path_to_your_svn/svn/hooks/svn-notify/mailer.py commit "$REPOS" "$REV" /path_to_your_svn/svn/hooks/svn-notify/mailer.conf
buildbotを使用できます。チェックインが発生するたびに任意のアクションを実行できるツールです。これはフル機能の継続的インテグレーション システムですが、メールだけが必要な場合でも確実に処理できます。SVN を含むさまざまな SCM 用のプラグインがあります。
これに似たポストコミット スクリプトを使用します。
素敵な HTML メールを送信します。削除されたコードを赤で強調表示し、追加されたコードを青で強調表示するように更新しました。
特定の Subversion ブランチの「hooks」ディレクトリには、作業を開始するための 9 つのテンプレート ファイルがあります。
キーポイント: サブバージョンは、名前が変更されるまでファイルを実行しません。UNIX で post-commit.tmpl を実行するには、名前を「post-commit」に変更します。Windows では、名前を「post-commit.bat」または「post-commit.exe」に変更します。「post-commit.tmpl」や「post-commit.sh」などの名前の場合、Subversion はファイルを実行しません。
また、subversion を実行する同じユーザーがファイルを実行できることを確認してください。
Subversionソースに含まれているPerlで書かれた(大きな)例があります(ここで見ることができます)。
また、Linux で動作するSVNMailer。