0

svn post-commitバッチ スクリプトで少し助けが必要です。ここに私が持っているもの:

ポスト commit.bat:

1. @ECHO OFF
2. cd D:\Subversion\...\hooks
3. SET OUTPUT = default
4. FOR /F "tokens=*" %%a in ('revision.bat') do ( SET OUTPUT=%%a )
5. findstr /m "Autobuild" D:\Subversion\...\db\revprops\0\%OUTPUT%
6. if %errorlevel%==0 (
7.   call website.bat
8. )

ウェブサイト.bat:

D:\Subversion\...\hooks\wget http://website.com/service-trigger

リビジョン.bat:

svnlook youngest D:\Subversion\...

つまり、ここで何が起こっているかというと、

  1. リポジトリにコミットした後、スクリプトは最後のrevision番号を抽出します

  2. その番号を使用して、リビジョン ログでファイルを検索します

  3. そのログで特定の文字列を見つけてみてください

  4. 特定の文字列が存在する場合は、いくつかの URL を起動します

私の問題は、このスクリプトが cmd から直接呼び出されたときに実行されることですが、SVN がそれを呼び出すと、エラーが発生しないため、5 行目で奇妙なことが起こっているように見えますが、7 行目は呼び出されません。

管理者としてスクリプトを実行する必要があるのではないかと思いますが、Windows 用に真剣にプログラミングしたことがないので、確信が持てず、助けが必要です。

4

1 に答える 1

1

SETステートメントではスペースが重要です。"output "3行目では、変数ではない変数を設定しています"output"

=行 3 の周囲と行 4 の後のスペースを削除します%%a(ただし、ここでは表示のみです)。

また...、(中略)か(親の親)かは不明。絶対ファイル名にスペースが含まれている場合、"quote it"

また、呼び出しごとに開始ディレクトリが異なる可能性もあります。2cd行目は、ドライブの現在のディレクトリを変更しD:ますが、既定のドライブには影響しません。D:デフォルトを drive に切り替えるには、実行する必要がありますD:revision.bat4行目はデフォルトとの相対です。

于 2013-07-09T16:39:16.630 に答える