Использование svn setprop с переменной сценария оболочки в значении свойства - PullRequest
1 голос
/ 03 ноября 2011

Я хочу использовать переменную в команде svn setprop svn:externals в сценарии оболочки.

Путь задан как переменная и работает нормально:

LOCALPATH="/some/path"
TARGETFOLDER="folder"
svn propset svn:externals 'dir -r100 http://svn.example.com/repos/trunk' $LOCALPATH/$TARGETFOLDER/externals

Однако, еслиЯ пытаюсь использовать переменную для номера ревизии, она не работает:

LOCALPATH="/some/path"
TARGETFOLDER="folder"
REV="100"
PROP="'dir -r$REV http://svn.example.com/repos/trunk'"
echo $PROP
svn propset svn:externals $PROP $LOCALPATH/$TARGETFOLDER/externals

Переменная PROP отображается правильно, но propset не работает.Я всегда получаю следующую ошибку:

svn: Cannot specify revision for setting versioned property 'svn:externals'

Любая помощь будет оценена.

Ответы [ 2 ]

3 голосов
/ 03 ноября 2011

Это проблема с экранированием одинарных кавычек в оболочке.См. там объяснил.Играя с вашим делом, вы обнаружили следующую комбинацию:

....
PROP="dir -r$REV http://.../trunk"
svn propset svn:externals ''"$PROP"'' $LOCALPATH/$TARGETFOLDER/externals
1 голос
/ 03 ноября 2011

Я не нахожу ничего плохого в вашем сценарии.Однако я испытываю ту же проблему.

Если вы заблокированы этим сценарием, вы можете рассмотреть возможность использования внешнего файла для установки свойства:

LOCALPATH="/some/path"
TARGETFOLDER="folder"
REV="100"
PROP="'dir -r$REV http://svn.example.com/repos/trunk'"
echo $PROP > svn.externals
svn propset svn:externals -F svn.externals
# rm svn.externals

Примечание: Вместо отображения команд при отладке сценария оболочки вы можете использовать флаг xtrace:

sh -x myscript.sh

Он будет выводить каждую выполненную команду, начинающуюся с +.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...