"Мы сохраняем наши файлы IntelliJ .IPR и .IWS в нашем контроле исходного кода, но они продолжают изменяться IntelliJ, просто открывая их, даже без какой-либо работы над проектом."
Файл .IWS определенно является файлом разработчика, поэтому он не должен находиться под контролем исходного кода.
Что касается файла .IPR в недавнем проекте, мы изначально пытались создать версию этого файла, подходя к нему концептуально, как если бы вы работали с проектом .Net и файлом VS.Net .SLN. Наша цель состояла в том, чтобы заставить разработчика работать и запускать его на чистом ПК в течение 15 минут, включая время, необходимое для установки зависимого программного обеспечения, такого как IDE или локальной базы данных. В конце концов, мы подошли немного времени, чтобы настроить локальную конфигурацию, как показано ниже.
Проблема в том, что в файле .IPR хранится больше настроек, чем в файле .sln -eg для отдельных плагинов. Таким образом, основной причиной перезаписей является то, что разработчик с другой конфигурацией плагина открывает файл IPR, в него записываются некоторые настройки по умолчанию для плагина. Мы чувствовали, что разработчики не должны ограничивать себя определенным супер-набором плагинов (просто минимальная конфигурация).
Способ решения проблемы (хотя и не полностью решенный) заключался в том, чтобы переключиться на формат папки .idea. Это берет содержимое файла .IPR и разбивает многие узлы на отдельные файлы и папки в подпапке .idea. Отсюда мы смогли исключить многие часто записываемые файлы из системы контроля версий. Некоторые из файлов, которые мы исключили, были:
- workspace.xml
- dataSources.xml
- sqlDataSources.xml
- dynamic.xml
Некоторые файлы, которые мы хотели бы, чтобы IntelliJ оставил в покое (хотя в этом также виноваты разработчики плагинов, а не только Jetbrains):
- projectCodeStyle.xml (чтобы мы могли получить согласованное форматирование кода в проекте - опять же это может быть перезаписано на основе локального набора плагинов разработчика).
- любой файл в папке runConfigurations. Настройка конфигурации запуска может занять много времени, особенно если у вас сложное приложение с множеством аспектов. Наиболее глупая вещь, которую можно изменить, просто открыв IDE или здание, - это опция "DEBUG_PORT" в RunnerSettings. Мое мнение: если он динамически размещен, почему бы не иметь значение «Динамический»?
- misc.xml. Этот файл также содержит конфигурацию плагина. Некоторые настройки выглядят удобными для совместного использования, а другие - для личной настройки. Например, плагин IvyIDEA устанавливает абсолютный путь к вашему файлу конфигурации ivy.
- Файлы модуля. Они в основном оставлены в покое, но примером ненужной перезаписи является плагин IvyIDEA, который помещает сведения о локальном расположении кэша плюща в этот файл. Но опять же, это ошибка плагина, а не Jetbrains.
Надеюсь, это поможет.
Christian.