Продължавам да получавам досадна грешка, която се случва, когато разработчиците на Windows проверяват готварски книги от моето хранилище на Git с autocrlf
на Git, зададено на true
. Когато стартират vagrant up
, за да изведат виртуална машина на Linux, файловете на готварската книга се нанасят във виртуалната машина с CRLF окончания на редове, което причинява безкрайни неясни грешки, когато обвивката и другите помощни програми на POSIX се опитват да работят с (вече невалидни) шаблонни файлове, които са били копирани във VM.
Поправката за това е достатъчно проста: клонирайте отново хранилището след промяна на настройката autocrlf
на input
или false
.
Моят проблем е, че когато имате грешни краища на редове, единствените симптоми са грешки на странни места, които по никакъв начин не сочат, че има проблем с краищата на редове.
Как мога да накарам Chef† да проверява за грешни окончания на редове в, да речем, шаблонните файлове на готварската книга и да изведе грешка, ако намери такава? Мисля, че прост Ruby фрагмент, който прави твърдение за окончанията на редовете в даден файл, който мога да поставя в горната част на рецепта, ще работи.
Забележка: в конкретния случай на моето репо, последователността от стъпки е:
- Разработчикът проверява репото
- Разработчикът изпълнява
vagrant up
- Vagrant стартира готвач във виртуалната машина
- И накрая, скриптът за изграждане на репото се изпълнява във VM
† Или наистина нещо друго, включено в репото