Управление git autoclrf для команд в разных средах
Просто перешел на git и столкнулся с проблемой, которая подробно обсуждалась здесь
Я хотел понять, учитывая, что мы установили core.autocrlf=true по умолчанию, и мы имеем дело с огромным количеством операций ввода-вывода Java и, следовательно, имеем различные тестовые примеры для одного и того же; как мы можем гарантировать, что примеры модульных тестов, разработанные dev on win, могут корректно выполняться для dev на linux и наоборот.
например, блок юнит-теста читает текстовый файл (*.ext) и сравнивает длину байтов как ожидаемую с фактической, так и при выигрыше; git pull с core.autocrlf=true будет извлекать текстовый файл и конвертировать все LF в CRLF . Рассмотрим, например, тестовый пример, который интересуется количеством байтов, и, таким образом, при выигрыше число байтов будет больше. При фиксации CRLF будет преобразован в LF; но затем тестовый провал для разработчика на Linux.
Может это обошлось с.gitattributes?
В.gitattributes -> *.ext текст
это нормализует файл при коммите и все еще будет страдать от вышеуказанной проблемы? Указатели приветствуются, заранее спасибо
1 ответ
Как я уже говорил, никогда не устанавливайте core.autocrlf
истинно, всегда ложно.
Это глобальная обстановка с непредвиденными последствиями.
Если у вас есть определенный тип документов, которыми вы хотите управлять в терминах eol, делайте это только через.gitattributes
файлы и core.eol
директивы.
В твоем случае, gitattributes
являются хорошим решением для того, чтобы иметь детальный контроль над тем, что вы хотите преобразовать.
Но общая идея заключается в том, чтобы ничего не преобразовывать, пока это не станет абсолютно необходимым:
Если вы можете сгенерировать или сохранить эти текстовые файлы (используемые для тестирования) с правильным eol (какой бы ни была базовая ОС), ваши тесты будут согласованы.