web-dev-qa-db-ja.com

svnpost-commitフックをインストールする方法

LinuxでSVNを実行しています。コミットしたら、自動デプロイメントを実行したいと思っていました。私の検索によると、svnpost-commitでうまくいくようです。しかし、SVNインストールからコミット後のSVNを見つけることができませんでした。それで、それは別のインストールなのだろうか?ダウンロードしてインストールできるSVNコミット後フックはありますか?

15
johnsam

個別のインストールではありません。リポジトリディレクトリには、「フック」ディレクトリがあります。 post-commit.tmplを見つけることができます。ファイルを変更し、OSの種類に応じて実行可能ファイルに名前を変更するだけです。

15
zhongshu

まず、おそらくこれをポストコミットとして実行したくないでしょう。その理由は、ユーザーが続行する前にフックが完了するのを待つ必要があるため、フックで実行するのに時間がかかりすぎることは何もしたくないからです。

質問に答えるには、サーバーのリポジトリディレクトリを見てください。次のディレクトリとファイルが表示されます。

  • README.txt
  • conf
  • db
  • フォーマット
  • フック
  • ロック

ディレクトリの1つはhooksと呼ばれます。このディレクトリを見てください:

  • post-commit.tmpl
  • post-lock.tmpl
  • post-revprop-change.tmpl
  • post-unlock.tmpl
  • pre-commit.tmpl
  • pre-lock.tmpl
  • pre-revprop-change.tmpl
  • pre-unlock.tmpl
  • start-commit.tmpl

これらは、さまざまなフックのテンプレートです。これらはすべて単純なBASH/Korn/BourneShellスクリプトであることがわかります。 svnlookコマンドを使用して、ユーザーがコミットしたばかりのリビジョンまたはトランザクション(pre-commitフックの場合)に関する情報を取得します。

コマンドsvnlook changedを実行して何が変更されたかを確認し、この情報に基づいてファイルをフェッチしてデプロイする必要があります。これは、作業ディレクトリを作成してチェックアウトする必要があることを意味します。開発者がチェックインを行い、コミット後のフックがチェックアウトとデプロイを行うのを待っていると想像してみてください。

Jenkins のようなものを取得して、コミット後のタスクを実行することをお勧めします。 Jenkinsは通常、継続的ビルドサーバーです。誰かがコミットを行うたびに、Jenkinsはそのプロジェクトのチェックアウトを行い、ビルドを行います。あらゆる種類のテストを実行し、問題が発生した場合は開発者に電子メールを送信できます。

ただし、実際にビルドするものがない場合は、チェックアウトとデプロイを行うこともできます。 JenkinsはJava 1.6を使用して実行しますが、それ以外の場合は、インストールと使用が非常に簡単です。すべてメニュー方式であり、XMLファイルの作成方法やプログラムの作成方法を知る必要はありません。これを使って。

だから、ジェンキンスを見て、そこから展開を行うことについて見てください。このようにして、Jenkinsがデプロイメントを処理している間、開発者は作業を続行できます。また、展開に問題がある場合は、Jenkinsにメール、IM、ツイートを送信させたり、信号を緑から赤に変更したりすることもできます。

21
David W.