Мы недавно перешли с svn на git в моей компании, поэтому общее ноу-хау все еще довольно низкое.
Мы решили установить core.autocrlf = true на каждой машине и использовать файлы ".gitattributes" для "точной настройки".
My Main Focus - это проект интеграции с apache-camel для преобразования файлов из "a" в "b". Поскольку многие конечные точки различны, мне нужно обеспечить кодирование, окончания строк и т. Д. В моих тестах с верблюдом apache я беру статический файл из моих ресурсов тестирования, преобразую его и сравниваю выходные данные с другим статическим файлом (в основном ожидаемый результат) в моих тестовых ресурсах.
Раньше это работало идеально, пока мы не ввели "core.autocrlf = true". С тех пор, похоже, тесты на jenkins успешно завершаются, но когда я запускаю их локально, многие из них терпят неудачу. (Я недавно клонировал репозиторий после введения "core.autocrlf = true").
Я искал 1 из ожидаемых выходных файлов. Если я проверяю окончание строки на моей машине (победа 10), они "crlf". Если я проверяю окончания строк в файле из репозитория, то они "lf". Это преобразование следовало ожидать с core.autocrlf = true.
Однако я попытался добавить файл ".gitattributes". С этими двумя спецификациями:
* text=auto
*.xml binary
Я просто использовал "* .xml", чтобы облегчить тестирование, если оно работает. По сути, мне нужно, чтобы все мои файлы в тестовых ресурсах игнорировались. Но с указанным выше файлом «.gitattributes» я все равно получаю тестовый файл с crlf на моей машине, даже если я недавно клонировал весь репозиторий и выполняю «git checkout branchname». Это то же самое поведение, если я делаю
*.xml text eol=lf
или
*.xml -text" etc.
Из того, что я прочитал до сих пор, я понял, что, если я указываю путь или тип файла в качестве "двоичного", git вообще не должен делать никакого преобразования, если я делаю git checkout, git commit или git, что угодно.
Я что-то не так понял, или я просто что-то делаю не так, или мерзавец не работает как надо?