pre-commit フックは、何らかの理由でコミットを失敗できるようにしたい場合に使用されます。FTP サイトがダウンしていたり、ディスクがいっぱいだったりして、本当にコミットを失敗させたいですか?
プリコミット スクリプトは、必要なプロパティが欠落しているファイルなど、開発者の制御下にあるものを失敗させる場合にのみ使用する必要があります。これにより、開発者は問題を修正し、コミットを再送信できます。
コミット後のスクリプトは、ユーザーが完了するのを待つ間、ユーザーの端末を拘束しますが、スクリプトが失敗し、何かが失敗したことをユーザーに通知する可能性がありますが、コミットはとにかく行われます。フックを使用してこれを行う場合は、コミット前フックではなく、コミット後フックを使用する必要があります。
あなたがやりたいことのために、フックは良い方法ではありません。ユーザーが大量のファイルをコミットした場合はどうなりますか? フック スクリプトが実行されている間、10 分ほどそこに座っている必要がありますか?
Hudsonのような継続的なビルド システムを使用することをお勧めします。Hudson は Subversion リポジトリを監視し、ユーザーがコミットするたびに必要な FTP タスクを実行できます。Hudson を使用すると、開発者がフックの完了を待つ必要がなくなり、すべてのコミットで何が起こったかの完全なログが得られます。
実際、すべてのサイトで継続的なビルド サーバーを使用する必要があります。コードをコンパイルしない場合でも、すべてのコミットに対してテストを実行する必要があります。
Hudson には FTP および SFTP プラグインもあり、タスクをより簡単に行うことができます。また、Hudson でビルド前およびビルド後のスクリプトを呼び出すことができるため、必要に応じてほぼすべてを柔軟に実行できます。
Hudson は Windows サーバーと Unix サーバーで動作します。これは Java プロセスです。
Windows を使用していてPowerShellを持っていない場合は、スクリプト言語をダウンロードし、それを使用してフックを作成する必要があります。Windows command.exe プロセッサの標準的なバッチプログラミング言語は、柔軟性が低く、強力でもありません。フックはサーバー上で実行されるため、フックが単一のマシンで実行されるかどうかを気にするだけで済みます。一部のプログラムはクライアント側のフックを使用します。フックを作成する場合、クライアントが使用する可能性のあるすべてのシステムで実行できる必要があります。