Просто перешел на git и столкнулся с проблемой, которая подробно обсуждалась здесь
Я хотел понять, учитывая, что мы установили core.autocrlf = true по умолчанию, и мы имеем дело с огромным количеством операций ввода-вывода java и, следовательно, имеем различные тестовые примеры для одного и того же; как мы можем гарантировать, что модульные тесты, разработанные разработчиком на win, могут правильно выполняться для разработчика на linux и наоборот.
Для напр. пример модульного теста считывается в текстовом файле (* .ext) и сравнивает длину байтов, как ожидалось, с фактической, а затем при выигрыше; git pull с core.autocrlf = true извлечет текстовый файл и преобразует все LF в CRLF. Рассмотрим, например, что тестовый пример интересуется количеством байтов, и, таким образом, при выигрыше количество байтов будет больше. При фиксации CRLF будет преобразован в LF; но тестовый wud затем не работает для разработчика на Linux.
Можно ли с этим справиться с помощью .gitattributes?
В .gitattributes -> * .ext текст
Это нормализует файл при фиксации и по-прежнему будет страдать от вышеуказанной проблемы? Указатели приветствуются, заранее спасибо
1 ответ
Как я уже говорил ранее, никогда не устанавливайте для core.autocrlf
значение true, всегда значение false.
Это глобальная установка с непредвиденными последствиями.
Если у вас есть документы определенного типа, которыми вы хотите управлять с точки зрения eol, сделайте это только через .gitattributes
файлы и core.eol
директивы.
В вашем случае gitattributes
- хорошее решение для точного контроля над тем, что вы хотите преобразовать.
Но основная идея состоит в том, чтобы ничего не преобразовывать до тех пор, пока это не станет абсолютно необходимым:
Если вы можете сгенерировать или сохранить эти текстовые файлы (используемые для тестирования) с правильным eol (независимо от базовой ОС), ваши тестовые примеры будут согласованными.
Похожие вопросы
Связанные вопросы
Новые вопросы
git
Git — это распределенная система контроля версий с открытым исходным кодом (DVCS). Используйте этот тег для вопросов об использовании Git и рабочих процессах. Не используйте этот тег для общих вопросов по программированию, связанных с репозиторием Git. Не используйте этот тег для вопросов GitHub/GitHub Actions, не связанных с использованием git; вместо этого используйте [github] или [github-actions]. Не используйте тег [github] для проблем, связанных с Git, только потому, что репозиторий размещен на GitHub.
core.autocrlf
, без.gitattributes core.eol
и вообще без преобразования. Это означает, что тесты будут вести себя последовательно.