Просто перешел на git и столкнулся с проблемой, которая подробно обсуждалась здесь

Я хотел понять, учитывая, что мы установили core.autocrlf = true по умолчанию, и мы имеем дело с огромным количеством операций ввода-вывода java и, следовательно, имеем различные тестовые примеры для одного и того же; как мы можем гарантировать, что модульные тесты, разработанные разработчиком на win, могут правильно выполняться для разработчика на linux и наоборот.

Для напр. пример модульного теста считывается в текстовом файле (* .ext) и сравнивает длину байтов, как ожидалось, с фактической, а затем при выигрыше; git pull с core.autocrlf = true извлечет текстовый файл и преобразует все LF в CRLF. Рассмотрим, например, что тестовый пример интересуется количеством байтов, и, таким образом, при выигрыше количество байтов будет больше. При фиксации CRLF будет преобразован в LF; но тестовый wud затем не работает для разработчика на Linux.

Можно ли с этим справиться с помощью .gitattributes?

В .gitattributes -> * .ext текст

Это нормализует файл при фиксации и по-прежнему будет страдать от вышеуказанной проблемы? Указатели приветствуются, заранее спасибо

2
sunny 11 Сен 2013 в 07:53

1 ответ

Лучший ответ

Как я уже говорил ранее, никогда не устанавливайте для core.autocrlf значение true, всегда значение false.

Это глобальная установка с непредвиденными последствиями.

Если у вас есть документы определенного типа, которыми вы хотите управлять с точки зрения eol, сделайте это только через .gitattributes файлы и core.eol директивы.

В вашем случае gitattributes - хорошее решение для точного контроля над тем, что вы хотите преобразовать.

Но основная идея состоит в том, чтобы ничего не преобразовывать до тех пор, пока это не станет абсолютно необходимым:
Если вы можете сгенерировать или сохранить эти текстовые файлы (используемые для тестирования) с правильным eol (независимо от базовой ОС), ваши тестовые примеры будут согласованными.

1
Community 23 Май 2017 в 13:25
«если вы можете генерировать или хранить эти txt-файлы с правильным eol» ... Я бы хотел использовать git, чтобы включить это, потому что модификации в одной ОС могут привести к сбоям в другой. у вас есть предложения по управлению этим?
 – 
sunny
11 Сен 2013 в 09:43
1
Я имел в виду создание txt-файлов только с одним стилем eol и сохранение этого eol во всех операционных системах, то есть без core.autocrlf, без .gitattributes core.eol и вообще без преобразования. Это означает, что тесты будут вести себя последовательно.
 – 
VonC
11 Сен 2013 в 09:51
Понял. так что это станет лучшей практикой для разработчиков, а не решением через git
 – 
sunny
11 Сен 2013 в 09:57
Да, по моему опыту, всегда старайтесь ограничивать преобразование до тех пор, пока оно вам абсолютно не понадобится.
 – 
VonC
11 Сен 2013 в 10:08
Принимая это как ответ. сбой можно легко обнаружить в автоматизированных тестовых сборках и исправить. боль, с которой можно жить.
 – 
sunny
12 Сен 2013 в 22:08