私は、svn からファイルをチェックアウトし、Jar を呼び出すことによって、いくつかのデプロイ タスクを実行するシェル スクリプトに取り組んできました。開発に問題なくテスト SVN URL を使用しています。タグの展開をテストする必要があるのですが、入力を使用して URL を作成しようとすると、突然 svn で問題が発生します。
私はこのようなURLを構築しています:
svnurl=$(echo ${template//[# ]/})
svnurl=$(svn://0.0.0.1/models/tags/"$tag"/"$svnurl")
urls=("${urls[@]}" $svnurl)
これは、作業コードとわずかに異なります。
svnurl=$(echo ${template//[# ]/})
urls=("${urls[@]}" $svnurl)
svn export "$svnurl"
(基本的に、url-template から IP とタグのディレクトリを取り出しています)。
「export complete」を取得する代わりに、シェルを実行しようとすると、次のようになります。
./deploy-files.sh: line 36: svn://0.0.0.1/models/tags/201407221642/ResponseA.xsl: No such file or directory
svn: '.' is not a working copy
ターミナルで実行するsvn export svn://0.0.0.1/models/tags/201407221642/ResponseA.xsl
と、ファイルは正しくエクスポートされます。確認しましたが、URLは同じです。「。」を再現できません 何を試しても作業コピーエラーです。
注:svn export -q svn://0.0.0.1/models/tags/"$tag"/deploy-filelist.yml
スクリプトの前半で使用されており、正常に機能します
原因は何ですか?
ありがとう
編集
svn URL の構築方法に関する詳細情報
urls=()
IFS=$'\n' yaml=($(cat deploy-filelist.yml))
for u in "${yaml[@]}"; do
if [[ $u =~ url.* ]]
then
template=$(echo $u | sed -e 's/url://g' -e 's/"//' -e 's/"$//')
svnurl=$(echo ${template//[# ]/})
svnurl=$(svn://0.0.0.1/models/tags/"$tag"/"$svnurl")
urls=("${urls[@]}" $svnurl)
svn checkout "$svnurl"
fi
done
deploy-filelist.yml から各行を読み取ります。行に「url」が含まれている場合は、必要な文字列を切り取り、テンプレートの「svn://....」部分に追加します。エラーメッセージをコピーし、それを使用してファイルをエクスポートできるため、URL は正しく形成されています。