Можно ли изменить настройку EOL в .gitattributes без необходимости нормализовать все файлы? - PullRequest
0 голосов
/ 04 июня 2018

У меня есть хранилище, есть смесь CRLF и LF.С новыми запросами на получение новых изменений EOL, что раздражает.Есть ли способ настроить .gitattributes таким образом, чтобы:

  1. Когда вы регистрируете что-то (запись в базу данных объектов), оно нормализуется (в LF).
  2. Вам не нужно менять все EOL во всем хранилище, что приводит к огромному количеству нежелательных изменений, которые усиливают обвинения и т. Д.

1 Ответ

0 голосов
/ 04 июня 2018

Есть, но это в меру болезненно: добавляйте каждый файл, который вы изменяете, по одному, к .gitattributes, чтобы указать его (по пути) в виде текста.То есть, вы начнете с .gitattributes чтения:

* binary

Затем, когда вы (или кто-либо другой) работаете с каким-либо файлом с именем, скажем, dir/sub/phile.ext, вы также отредактируете .gitattributesчитать:

* binary
dir/sub/file.ext text

, чтобы с этого момента в файле с этим одним конкретным именем все окончания строк были нормализованы.

Когда вы отредактировали1352 из 3000 файлов, ваш .gitattributes будет содержать 1353 строки: 1352 для файлов плюс * binary впереди.В какой-то момент (около 1500 из 3000 файлов) будет проще инвертировать список: перечислите каждый файл, который не является , который будет рассматриваться как текст, с * text строкой впереди.С этого момента каждый раз, когда вы редактируете файл, удаляет его из .gitattributes.Когда вы отредактировали 2999 из 3000 файлов, ваш .gitattributes будет уменьшен до двух строк:

* text
path/to/never-edited.zog binary

Обратите внимание, что вы можете разбить один большой .gitattributes файл на более мелкие файлы, по одному наподкаталог: если вы отредактировали каждый файл в dir/sub на данный момент, вы можете убрать их из верхнего уровня .gitattributes и dir/sub/.gitattributes перечислить все его файлы как * text, например.

Ключом к этому является то, что последняя совпадающая строка для некоторого атрибута применяется к файлу, а .gitattribute файлы считываются сначала с верхнего уровня, вплоть до самого конкретного подкаталога, последнегопоэтому строки верхнего уровня .gitattributes переопределяются dir/.gitattributes строками, которые, в свою очередь, переопределяются dir/sub/.gitattributes строками при работе с файлами в dir/sub.

.
...