«Мы сохраняем наши файлы 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 устанавливает абсолютный путь к вашему конфигурационному файлу плюща.
- Файлы модулей. Они в основном оставлены в покое, но примером ненужной перезаписи является плагин IvyIDEA, в котором размещаются сведения о локальном местоположении плюща-плюса в этом файле. Но опять же это ошибка плагина, а не Jetbrains.
Надеюсь это поможет.
Кристиан.