web-dev-qa-db-ja.com

スイッチドパスをコミットするときにクライアント側のフックスクリプトを実行できないのはなぜですか?

SVNリポジトリ(バージョン1.9.2)を入手し、Windows 7(x64)マシンでTortoiseSVNクライアント(バージョン1.9.2)を使用しています。クライアント側のフックスクリプト(start-commit、pre-commit、post-commit)があり、これらはリポジトリ内に保存され、もちろんローカルの作業コピーで利用できます。これらのスクリプトは、特別なプロパティtsvn:startcommithooktsvn:precommithook、およびtsvn:postcommithookを使用してインストールされ、それぞれが%REPOROOT%変数を使用してそれぞれのスクリプトファイルを指し、絶対的な動作を指定する必要がありません。パスをコピーします。

リポジトリに変更をコミットすると、フックスクリプト(バッチファイル、.bat)はすべて正常に機能します。

ただし、スイッチドパス内のファイルに変更をコミットしようとすると、次のエラーが表示されます。

メッセージを確認した後、コミットを実行できず、コミットダイアログが表示されません。

このエラーはフックスクリプトによって引き起こされるのではなく(唯一のコマンドとしてスクリプトにexit 0またはexit 1を書き込んでも変更がないため)、TortoiseSVNがそれらを実行しようとしたときに引き起こされると思います。 、何らかの理由で、それぞれのスクリプトを見つけることができなくなったようです。

では、リポジトリ、つまり作業コピーにあるフックスクリプトをどのように使用できますか?


変数%REPOROOT%を完全な絶対パスに置き換えても、動作はまったく変わりません。

%REPOROOT%プロパティで変数%REPOROOT+%tsvn:*commithookに置き換えると、切り替えられたパスでは何も変更されません(したがって、前述のエラーメッセージが表示されます)が、標準パスでは、フックスクリプトは実行されません。結局のところ、エラーメッセージはありません。


補足として、フックスクリプトが起動されたかどうかを確認するために、TortoiseSVNの承認/拒否ダイアログの表示に依存しています。
Approve or reject client-side hook script

3
aschipfl

同様の問題がありました。分岐(対処)後に機能するように%REPOROOT +%に切り替えました。

スクリプトに関しては、バッチファイルを実行していて、次の行を追加して、トリガーフォルダーではなくバッチファイルの場所から実行するようにしました。

cd/d%〜dp0

0
Gady