Я продолжаю получать бит от досадной gotcha, которая происходит, когда разработчики Windows проверяют кулинарные книги из моего Git repo with Git's autocrlf
set to true
. Когда они запускают vagrant up
для вывода виртуальной машины Linux, файлы cookbook отображаются в виртуальную машину с завершающими концами CRLF, что не приводит к концы неясных ошибок, когда оболочка и другие утилиты POSIX пытаются работать с шаблоном (теперь недействительным) файлы, которые были скопированы в виртуальную машину.Имейте Vagrant + Chef бежать, если файлы шаблонов были выписаны с окончанием строки CRLF
Исправить это достаточно просто: повторно клонировать хранилище после изменения autocrlf
на input
или false
.
Моя проблема заключается в том, что, когда у вас неправильные окончания строк, единственными симптомами являются ошибки в странных местах, которые никоим образом не указывают на проблему с окончанием строки.
Как я могу проверить шеф-повар за неправильными окончаниями строк, скажем, в файлах шаблонов поваренной книги и выбросить ошибку, если она найдет ее? Я думаю, что простой фрагмент Ruby, который выполняет утверждение на концах строки в заданном файле, который я могу разместить в верхней части рецепта, будет работать.
Примечание: в данном случае моей репо, последовательность шагов:
- Разработчик проверяет Repo
- Разработчик работает
vagrant up
- Vagrant стартует Chef запуска в виртуальной машине
- Наконец, сценарий построения репо находится в виртуальной машине
† Или действительно что-либо еще, включенное в t он репо
+1 Хороший ответ.В моем случае я не уверен, что могу применить это, поскольку локальные скрипты сборки запускаются на виртуальной машине только после того, как произошел прогон Chef. Извините за то, что вы не включили все детали в вопрос изначально. –
Работает ли он в контексте шеф-повара или нет, например. после, на самом деле не имеет значения. До тех пор, пока у вас есть рубин/комплект поставки, вышеуказанное будет работать. –
Сказав это, я бы рекомендовал запустить что-то вроде этого * до того, как * окончание строк DOS приведет его к главной ветке (или что-то еще) в scm. Иначе это будет просто шум. –