0

Windows 環境で SVN サーバーをセットアップしています。タグが作成されるたびに、ポストコミット スクリプトがタグに関する一定数の情報 (作成者、コメント、依存関係など) をエクスポートします。

また、タグ付けされたリポジトリから特定のファイルを添付したいと考えています。そのために、「svn export」コマンドを試しています。これは「シミュレートされた」タグでは問題なく機能しますが、svn クライアント (tortoise) を使用すると機能しません。

svn export --username foo --password bar svn://localhost/My_SVN_DB/tags/My_Tag/My_File.txt My_Export_Directory

私は以下をチェックしました:

  • コマンドの構文 --> 問題ないようです。post commit を呼び出してテスト引数を渡すと機能します
  • My_Export_Directory のアクセス権 --> スクリプトがそこにデバッグ ファイルも書き込むため、問題ないようです。

コミット後のスクリプトを実行するときに、タグ構造が既に存在するかどうか疑問に思っていますか? (だと思ってた…?)

何か案は ?

4

1 に答える 1

0

標準出力と標準エラーをリダイレクトすると、問題を見つけるのに役立ちます。

svn export --username foo --password bar svn://localhost/My_SVN_DB/tags/My_Tag/My_File.txt My_Export_Directory > tmp.log 2>&1

問題は、エクスポート前の1つのステートメントから発生しました。DB名は、for / fループを使用し、一時ループ変数(DBNAME)を上書きして抽出されました。

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Extract the DB name
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
setLocal EnableDelayedExpansion
for /f "tokens=4 delims=\" %%a in ("%REPOS%") do (set DBNAME=%%a)
echo !DBNAME!>%TMPFILE%
endlocal
REM Here is the problem
set /p DBNAME=<%TMPFILE%

最後の変数名をDBNAME2に変更するには、次のようにします。

set /p DBNAME2=<%TMPFILE%

スクリプトは正しく機能しました。

まったく同じトリック(/ f +上書き)もpre-commitスクリプトで使用され、そこで正しく機能するため、なぜこれが発生するのかはまだよくわかりません。何か案は??

于 2010-10-12T13:47:13.550 に答える