SVN экспорт работает в командной строке, но не в сценарии оболочки

Я работал над сценарием оболочки, который выполняет некоторые задачи развертывания, извлекая файлы из SVN и вызывая Jar. Я использую тестовый URL SVN без проблем для разработки. Теперь мне нужно протестировать развертывание тегов, и внезапно svn вызывает у меня проблемы, когда я пытаюсь создать URL с помощью ввода.

Я строю 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"

(в основном я беру каталог IP и тегов из URL-шаблона).

теперь, когда я пытаюсь запустить свою оболочку, вместо того, чтобы "завершить экспорт", я получаю следующее:

./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://....' part. URL сформирован правильно, так как я могу скопировать сообщение об ошибке и использовать его для экспорта файла.

1 ответ

Решение

В этой строке:

svnurl=$(svn://0.0.0.1/models/tags/"$tag"/"$svnurl")

Вы пытаетесь выполнить строку, поэтому возникает ошибка "Нет такого файла или каталога".

Вы, вероятно, хотите присвоить значение строке:

svnurl=svn://0.0.0.1/models/tags/"$tag"/"$svnurl"

или же

svnurl="svn://0.0.0.1/models/tags/$tag/$svnurl"
Другие вопросы по тегам