Символы конца строки в триггере в настройках Eclipse - PullRequest
0 голосов
/ 15 января 2020

Eclipse сохраняет некоторые настройки проекта в файле .settings/org.eclipse.wst.common.project.facet.core.xml, изменяя символы конца строки, и это создает ненужные коммиты и загрязняет хранилище. Вот содержимое файла:

<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>                                 (this EOL flip-flops)
  <installed facet="jst.utility" version="1.0"/>  (this EOL flip-flops)
  <installed facet="java" version="11"/>
</faceted-project>

Шаги для воспроизведения:

  1. Разработчик # 1 открывает проект в Windows, и Eclipse изменяет конец - of-line символы до \r\n; затем этот разработчик фиксирует в хранилище.
  2. Затем разработчик # 2 открывает проект в Linux, и Eclipse изменяет символы конца строки на \n; затем этот разработчик фиксирует в хранилище.
  3. Разработчик # 1 извлекает изменения в Windows и EOL триггеры снова. Промойте и повторите.

Это происходит с четырьмя файлами настроек (пока), поэтому они фиксируются в репозитории git практически при каждом коммите; и это загрязняет хранилище.

Есть ли способ заставить Eclipse использовать \r\n или \n для пользы? Настройки рабочего пространства и проекта, похоже, не влияют на «файлы настроек», а только на файлы «исходного кода».

1 Ответ

1 голос
/ 15 января 2020

Здесь возможны два подхода. Один из них - не хранить конфигурацию редактора в репозитории, что обычно является рекомендуемым подходом. Разные люди используют разные редакторы в разных системах, и все, кроме конфигурации редактора c, может содержать настройки, которые не применимы ко всем системам.

С другой стороны, если вы все равно хотите их сохранить, это использовать файл .gitattributes в вашем хранилище, а затем добавить строку, подобную следующей:

.settings/*.xml text

Затем запустите git add --renormalize .. Это заставит окончания строк в репозитории к LF и скажет Git, по умолчанию, проверить исходные окончания строк. Конечно, пользователь может настроить Git на что-то другое, если это соответствует его системе.

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

Вы также можете добавить * text=auto в файл .gitattributes, что позволит Git определить, какие файлы их строки должны быть нормализованы в зависимости от того, обнаружены ли они как двоичные или текстовые. Подробнее о том, как настроить эти параметры, можно узнать на справочной странице gitattributes(5).

...