Итак, у меня есть однострочная команда bash, которая проверяет, существует ли каталог. Если да, то git тянет, если нет, то клонирует репозиторий. Я запускаю Cygwin на своем компьютере с Windows, и когда я запускаю эту команду в Cygwin, она отлично работает:
if [ -d C:/repo ]; then cd C:/repo && "C:/Program Files (x86)/Git/bin/git.exe" pull; else "C:/Program Files (x86)/Git/bin/git.exe" clone -b develop https://repo.git C:/repo; fi
Когда я запускаю ту же команду из Puppet, вот так:
exec {'checkout repository':
command => "if [ -d C:/repo ]; then cd C:/repo && "C:/Program Files (x86)/Git/bin/git.exe" pull; else "C:/Program Files (x86)/Git/bin/git.exe" clone -b develop https://repo.git C:/repo; fi"
}
Я получаю сообщение об ошибке:
Ошибка: 'если [ -d C:/repo ]; затем cd C:/repo && "C:/Program Files (x86)/Git/bin/git.exe" pull; else "C:/Program Files (x86)/Git/bin/git.exe" clone -b develop https://repo.git C:/repo; fi' не является квалифицированным, и путь не указан. Уточните команду или укажите путь.
Есть идеи, почему?
cygpath
для преобразования путей, если не хотите делать это вручную. - person Costa   schedule 01.02.2013command => "bash -c 'if [ -d .... '"
. - person Perleone   schedule 09.02.2013