好きな場合は、CまたはC++を使用してフックを書くことができます。ほとんどの人はPerlやPythonを使います。
svnlook
は、svn
ではなく、フックスクリプトで使用することが重要です。 svnlookはsvn
より速くて安全です。実際、プリコミットスクリプトでは、リポジトリリビジョンを持っていないので、svnlook
を使用する必要があります。
はここにあなたのpost-commit
フックについて心に留めておくべきいくつかのものです:
- あなたがリビジョンを変更することはできませんし、変更をコミットしようとしないでください。あなたのコミット後のフックは、それ自身を呼び出すことになります。開発者が特定のパラメータを守るようにするには、開発者が正しく実行しないと失敗する
pre-commit
フックが必要です。
- Subversionが
post-commit
フックを呼び出すと、PATH
環境変数が削除されました。別のコマンドまたはファイルにアクセスする必要がある場合は、完全なパスを自分で指定する必要があります。
- Subversionはコマンドラインから特定のパラメータを渡します。実際のコマンドラインではありませんが、これらのパラメータは
ARGV
にあります。 2つのパラメーターがユーザーに渡されます。
- サーバーのリポジトリー・パス(
svnlook
コマンドの場合)。
- リポジトリのリビジョン。
あなたがsystem
コマンド経由で実行できる(svnlook
かかわら推測しなければなりません。あなたが実際にCとC++で物事を書いているので、あなたがSubversion APIで構築を使用することができるかもしれない他のすべて)。
別の可能性:汚れた作業を行うには、Jenkinsのような連続ビルドシステムを使用してください。コミット後のフックがこのタスクをどのように達成するかを心配するのではなく、Jenkinsを使って作業する方が簡単かもしれません。 Jenkinsの利点の1つは、何かがうまくいかない場合、コミットされていないコミットメッセージをユーザに返信しないことです。代わりに、猫は起こったことの完全なログを取得し、実際に問題を解決できる人に警告します。
私はPerlに書いたsample of oneです。あなたに何か良いことができるかどうかは分かりません。ここで
まず、(http://stackoverflow.com/questions [答えがここに既に利用されています]/139315/can-i-run-a-script-when-i-commit-to-subversion)を実行します。第二に:いいえ。それは "スクリプト"である必要はありません。実行可能ビットを持つものはすべて動作します。 CやC++でフックを書くこともできます。 –