0

WindowsマシンでSVNリポジトリを実行しています。コミットされたファイルをリモートWebサーバーにアップロードするスクリプトが必要です。pre-commitフックについて読んだことがありますが、実際にスクリプトを作成する方法や、どの言語で作成する必要があるのか​​さえわかりません。スクリプトを実行するには、.batまたは.exeである必要があるようです。窓の中で。

Windowsマシンで実行されるスクリプトを持っている人はいますか?サイト全体をアップロードするつもりはありませんが、個々のファイルがコミットされています。ftpアップロードが失敗した場合にユーザーにフィードバックを提供するため、pre-commitフックが必要です。

以前にこれを行ったことがある場合は、プロセス全体を初心者に説明してください。

4

2 に答える 2

3

pre-commit フックは、何らかの理由でコミットを失敗できるようにしたい場合に使用されます。FTP サイトがダウンしていたり​​、ディスクがいっぱいだったりして、本当にコミットを失敗させたいですか?

プリコミット スクリプトは、必要なプロパティが欠落しているファイルなど、開発者の制御下にあるものを失敗させる場合にのみ使用する必要があります。これにより、開発者は問題を修正し、コミットを再送信できます。

コミット後のスクリプトは、ユーザーが完了するのを待つ間、ユーザーの端末を拘束しますが、スクリプトが失敗し、何かが失敗したことをユーザーに通知する可能性がありますが、コミットはとにかく行われます。フックを使用してこれを行う場合は、コミット前フックではなく、コミット後フックを使用する必要があります。


あなたがやりたいことのために、フックは良い方法ではありません。ユーザーが大量のファイルをコミットした場合はどうなりますか? フック スクリプトが実行されている間、10 分ほどそこに座っている必要がありますか?

Hudsonのような継続的なビルド システムを使用することをお勧めします。Hudson は Subversion リポジトリを監視し、ユーザーがコミットするたびに必要な FTP タスクを実行できます。Hudson を使用すると、開発者がフックの完了を待つ必要がなくなり、すべてのコミットで何が起こったかの完全なログが得られます。

実際、すべてのサイトで継続的なビルド サーバーを使用する必要があります。コードをコンパイルしない場合でも、すべてのコミットに対してテストを実行する必要があります。

Hudson には FTP および SFTP プラグインもあり、タスクをより簡単に行うことができます。また、Hudson でビルド前およびビルド後のスクリプトを呼び出すことができるため、必要に応じてほぼすべてを柔軟に実行できます。

Hudson は Windows サーバーと Unix サーバーで動作します。これは Java プロセスです。


Windows を使用していてPowerShellを持っていない場合は、スクリプト言語をダウンロードし、それを使用してフックを作成する必要があります。Windows command.exe プロセッサの標準的なバッチプログラミング言語は、柔軟性が低く、強力でもありません。フックはサーバー上で実行されるため、フックが単一のマシンで実行されるかどうかを気にするだけで済みます。一部のプログラムはクライアント側のフックを使用します。フックを作成する場合、クライアントが使用する可能性のあるすべてのシステムで実行できる必要があります。

于 2010-12-01T22:59:07.080 に答える
1

コミット後のフックが必要だと思います。

svn フックは、実際には実行可能ファイルまたはスクリプト ファイルにすることができます。いくつかのサンプルについては、こちらをご覧ください

Windows では、組み込みのコマンド ライン ftp クライアントを使用できます。1 つの方法は、バッチ ファイルから生成できるテキスト ファイルに FTP コマンドを入れることです。例:

echo [username]>ftp.txt
echo [password]>>ftp.txt
echo put [filename]>>ftp.txt
echo quit>>ftp.txt

ftp -s:ftp.txt [server]

もちろん、これを行うプログラムを作成することもできます (たとえば、.Net ではFtpWebRequestクラスを使用)。バッチ スクリプトである必要はありません。

于 2010-12-01T21:42:27.170 に答える