何らかの理由でコミットに失敗する場合は、事前コミットフックが使用されます。 FTPサイトがダウンした、またはディスクがいっぱいだったために本当にコミットに失敗したいですか?
必要なプロパティなどが不足しているファイルなど、開発者が管理しているもので失敗する場合にのみ、事前コミットスクリプトを使用する必要があります。これにより、開発者は問題を修正してからコミットを再送信できます。
コミット後のスクリプトは、ユーザーの端末が完了するのを待っているにも関わらず、スクリプトが失敗して何かが失敗したとユーザーに通知しますが、とにかくコミットが発生します。あなたがフックでこれをしたいならば、あなたはpre-commitフックではなく、ポスト・コミット・フックでそれを行うべきです。
あなたがしたいことについて、フックは良い方法ではありません。ユーザーがたくさんのファイルをコミットするとどうなりますか?あなたのフックスクリプトが実行されている間、彼らは10分ほどそこに座っていなければなりませんか?
より良い考え方は、Hudsonのような連続的なビルドシステムを使用することです。 HudsonはSubversionリポジトリを監視し、ユーザがコミットするたびに必要なFTPタスクを実行できます。ハドソンでは、開発者がフックを完了するのを待っている間に開発者を縛りつけているわけではなく、すべてのコミットで何が起きたのかを完全に記録しています。
実際、すべてのサイトで連続ビルドサーバーを使用する必要があります。 コードをにコンパイルしなくても、すべてのコミットに対してテストを実行します。
ハドソンにはFTPとSFTPプラグインがあり、タスクを簡単にすることができます。ハドソンではビルド前とビルド後のスクリプトを呼び出すことができるので、あなたの心が欲しいものはほとんど何でも自由に処理できます。
ハドソンは、WindowsサーバとUnixサーバで動作します。これはJavaプロセスです。
あなたがWindows上だし、あなたがPowerShellのを持っていない場合、あなたには、いくつかのスクリプト言語にあなたをダウンロードして、あなたのフックを書くためにそれを使用する必要があります。 Windowsのcommand.exeプロセッサーの標準バッチプログラミング言語はあまり柔軟ではありません。フックはサーバー上で実行されるため、フックが1台のマシンで実行されるかどうかを心配するだけです。いくつかのプログラムはクライアント側のフックを使用し、フックを書く場合、クライアントが使用する可能性があるすべての単一システムで実行できる必要があります。
いいえ、私は事前コミットが必要です。さもなければ、FTPのアップロードは失敗しますがコミットされ、私はうんざりです。 – Liquidgraph
これらのサンプルはFTPアップロードに関するものではありません。また、フックスクリプトを使用してWindowsでビルドインコマンドラインftpクライアントを使用する方法を詳しく説明できますか? – Liquidgraph
あなたが最後に望むことは、プレコミットフックです。事前コミットフックは、ユーザーの問題にのみ使用する必要があります。このようにして、ユーザーは問題を訂正して再試行することができます。 FTPサーバーに問題があります。 –