22

Мы сохраняем наши файлы IntelliJ .IPR и .IWS в нашем исходном контроле, но они продолжают модифицироваться IntelliJ, просто открывая их, даже без какой-либо работы над проектом.Слияния в файлах IntelliJ IDEA .IPR и .IWS

Что мы делаем неправильно?

ответ

0

Одним из решений является не поместить ваши проекты IntelliJ в исходный контроль. Это означает, что их легко воссоздать.

Вы можете указать Subversion о файлах, которые он должен игнорировать. Добавьте свои файлы IntelliJ в этот список.

«... даже без какой-либо работы над проектом ...» - это говорит о том, что вы часто открываете IntelliJ без какой-либо полезной работы над проектом. Возможно, это настоящая проблема. Я не понимаю, почему вы открыли IDE, не делая SOMETHING, что стоит проверить. И какова стоимость растущего номера версии? Маленький, по-моему.

Итак, теперь я передумал. Проверьте файлы проекта IntelliJ и не беспокойтесь о растущих номерах ревизий. Они не очень ценят вас.

+0

Но они содержат структуру проекта! Мы используем их (по крайней мере, IPR) в процессе автоматической сборки, а также таким образом, когда один разработчик меняет модуль, другие разработчики получают его изменения. Это похоже на сохранение .sln-файла в исходном элементе управления .NET, который является рекомендуемой лучшей практикой. – ripper234

+0

Не так сложно воссоздать. – duffymo

+0

Если не поставить в исходный элемент управления, не каждый разработчик должен поддерживать свою собственную версию и синхронизироваться с изменениями, внесенными другими разработчиками? – ripper234

4

Не зная точно, что изменяется, это немного трудно ответить уверенно, но я бы сказал:

  • IWS файлы содержат информацию, описывающую, как IDE разработчик является организовал для этого проекта (в том числе такие истории, как недавняя история изменений, текущее состояние каждого окна редактора, которые прикрепляются к окнам и которые были свернуты). Учитывая, что каждому разработчику должно быть разрешено организовывать свою рабочую область, как им нравится, эти не должны находиться в исходном управлении.

  • IPR файлы описывают структуру проекта код - под этим я имею в виду такие вещи, как, какие модули являются частью проекта, который build.xml файлы использовать, где найти библиотеки для компиляции кода и т.д. Это может быть в исходном режиме, но если вы позволите этим настройкам меняться от одной копии проекта разработчика к другому, вы будете в грубой поездке.

Если у вас есть libraryTable компонент внутри файла IPR:

Почти наверняка, что происходит в том, что каждый разработчик хранит общие библиотеки (баночки) - требуется построить свой код - на их местном машина в разных местах; когда они фиксируют изменения, расположение их библиотек записывается в файл IPR. Если бы вы сделали это, когда я обновил проект, моя копия ПИС и вашей будет конфликтовать по местам этих JAR.

Мы сталкиваемся с этой проблемой, размещая файлы JAR в общем местоположении (например, подключенный сетевой диск), а затем гарантируя, что каждый разработчик загружает эти файлы в одно и то же место (подпапка lib в корне проекта хорошо работает). Недостатком является то, что вы получаете несколько копий одного и того же JAR по проектам (каждый проект будет ссылаться на свою собственную папку lib), но, с другой стороны, поскольку каждый разработчик использует ту же структуру проекта, обновление IPR должно работать намного лучше.

Иначе:

Посмотрите, чтобы увидеть, что IntelliJ пытается объединить (при обновлении, вы должны быть предоставлена ​​возможность вручную объединить файлы или просматривать различия, в противном случае использовать ваш любимый инструмент сравнения) , Если бы вы могли обновить свой вопрос немного подробнее о том, как выглядят конфликты слияния, это может облегчить работу с колесами.

35

«Мы сохраняем наши файлы 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.

Надеюсь, что это поможет.

Христианство.

+0

Какой замечательный ответ. – Kieveli

+3

Да - отличный ответ! На форуме Jetbrains ваше решение исключить файл workspace.xml поддерживается: http://devnet.jetbrains.net/message/5252427 (Они также предлагают исключить tasks.xml при использовании формата .idea). –

1

Мы добавляем расширение к тем, которые были проверены в исходном элементе управления (.deleteme). Затем новые люди могут проверить проект, изменить расширения и уйти. Если мы вносим изменения в конфигурацию, мы обновляем проверенные файлы.

Смежные вопросы