Управление 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 (какой бы ни была базовая ОС), ваши тесты будут согласованы.

Другие вопросы по тегам