SVNリポジトリ(バージョン1.9.2)を入手し、Windows 7(x64)マシンでTortoiseSVNクライアント(バージョン1.9.2)を使用しています。クライアント側のフックスクリプト(start-commit、pre-commit、post-commit)があり、これらはリポジトリ内に保存され、もちろんローカルの作業コピーで利用できます。これらのスクリプトは、特別なプロパティtsvn:startcommithook
、tsvn:precommithook
、およびtsvn:postcommithook
を使用してインストールされ、それぞれが%REPOROOT%
変数を使用してそれぞれのスクリプトファイルを指し、絶対的な動作を指定する必要がありません。パスをコピーします。
リポジトリに変更をコミットすると、フックスクリプト(バッチファイル、.bat
)はすべて正常に機能します。
ただし、スイッチドパス内のファイルに変更をコミットしようとすると、次のエラーが表示されます。
メッセージを確認した後、コミットを実行できず、コミットダイアログが表示されません。
このエラーはフックスクリプトによって引き起こされるのではなく(唯一のコマンドとしてスクリプトにexit 0
またはexit 1
を書き込んでも変更がないため)、TortoiseSVNがそれらを実行しようとしたときに引き起こされると思います。 、何らかの理由で、それぞれのスクリプトを見つけることができなくなったようです。
では、リポジトリ、つまり作業コピーにあるフックスクリプトをどのように使用できますか?
変数%REPOROOT%
を完全な絶対パスに置き換えても、動作はまったく変わりません。
%REPOROOT%
プロパティで変数%REPOROOT+%
をtsvn:*commithook
に置き換えると、切り替えられたパスでは何も変更されません(したがって、前述のエラーメッセージが表示されます)が、標準パスでは、フックスクリプトは実行されません。結局のところ、エラーメッセージはありません。
補足として、フックスクリプトが起動されたかどうかを確認するために、TortoiseSVNの承認/拒否ダイアログの表示に依存しています。
同様の問題がありました。分岐(対処)後に機能するように%REPOROOT +%に切り替えました。
スクリプトに関しては、バッチファイルを実行していて、次の行を追加して、トリガーフォルダーではなくバッチファイルの場所から実行するようにしました。
cd/d%〜dp0