2

Windows 7 x64 で TortoiseSVN を使用しています。post-commit.batをリポジトリのフォルダに入れようとしましたhooksが、まったく機能しません。pre-commit.batそこで、 (内容は とまったく同じpost-commit.bat)を に入れてみましたが、hooksうまくいきました。

これは非常に奇妙です。.bat ファイルは非常にシンプルです。

@echo off
setlocal
set REPOS=%1
set TXN=%2  
xcopy C:\a C:\b\ /S /F
exit 0

TortoiseSVN でコミット後の作業を行う人はいますか?

4

1 に答える 1

2

問題は TortoiseSVN の問題ではなく、サーバーの問題です。リポジトリはどこに保存されますか? どのサーバーを使用していますか? またはを使用していますsvnservehttpd

とにかくあなたのコミットは起こると思います。いくつかの可能性があります:

  • あなたのフックは実行されていますが、何もしていません。ゼロの終了ステータスで終了する限り、Subversion はすべてがハンキーであると考えます。pre-commit.batという行のみを含むSubversion プログラムを試してくださいexit 2。まだ何かをコミットできる場合、フックはまったく機能していません。

  • あなたのフックは実行されていません。Subversion はディレクトリ内のプログラムpre-commitを実行します。実行可能ファイルを見つけるためにファイルに追加されるサフィックスを含む、Windows でhooks呼び出される環境変数があります。PATHEXT通常、 を試し*.com*.exe次に を試します*.bat。そのディレクトリにpre-commit.exeorがある場合、あなたは実行されません。Subversion サーバーを実行しているユーザーの値を確認し、正しく設定されていることを確認してください。pre-commit.cmdhookspre-commit.batPATHEXT


問題の 1 つは、Subversion のフックがSTDOUTを食べ、フックが失敗した場合にのみSTDERRを表示することです。これにより、フックはユーザーにとってかなり無意味になり、実行中に出力を印刷することに依存している場合、フックが何もしていないという印象を受ける可能性があります。

STDOUT ではなく STDERR に出力します。フックを強制的に失敗させる方法があるため、必要に応じて STDERR を確認できます。

また、Windowsのバッチ スクリプトでフックを記述することもお勧めしません。この種の仕事をするのは、単に切り取られていません。Python または Perl を使用します。または、本当に PC 指向で、サーバーに Python や Perl をインストールしたくない場合は、非常に強力ですが、Windows 用の十分に活用されていないプログラミング言語である PowerShell を使用してください。

于 2013-11-19T15:44:19.950 に答える