24

Вопрос по projects-and-solutions, merge, version-control, intellij-idea – Объединяет файлы IntelliJ IDEA .IPR и .IWS

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

Что мы делаем не так?

  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от ripper234
  • Error: User Rate Limit Exceededdevnet.jetbrains.net/message/5252427Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от ripper234
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • 0

    Одним из решений является не переводить ваши проекты IntelliJ в систем

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

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

    & quot; ... даже без какой-либо работы над проектом .... & quot; - это говорит о том, что вы часто открываете IntelliJ, не выполняя никакой полезной работы над проектом. Может быть, это реальная проблема. Я не могу понять, почему вы открыли IDE, не делая ЧТО-ТО, что стоило бы проверить. И какова стоимость увеличения номера ревизии? Маленький, на мой взгляд.

    Так что теперь я передумал. Проверьте в файлах проекта IntelliJ и не беспокойтесь о росте числа ревизий. Они не стоят вам дорого.

  • 4

    Не зная точно

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

    IWS files contain information describing how a developer's IDE is arranged for this project (including such things as recent change history, the current state of each editor window, which dockable windows are visible and which have been collapsed). Given that each developer should be allowed to arrange their workspace however they like, these should not be in source control.

    IPR files describe the structure of the project code - by this I mean things like which modules are part of the project, which build.xml files to use, where to find libraries to compile your code etc. This can be in source control, but if you allow these settings to vary from one developer's copy of the project to the next, you'll be in for a rough ride.

    If you have a libraryTable component inside your IPR file:

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

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

    Otherwise:

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

  • 1

    Мы добавляем расширение к тем

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

  • 37

    IPR and

    "We keep our IntelliJ ..IWS files in our source control, but they keep getting modified by IntelliJ just by opening them, even without any work being done on the project."

    Файл .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 (so we can get consistent code formatting in the project - again this can be overwritten based on a developer's local plugin mix). any file under the runConfigurations folder. It can be time consuming to configure run configurations particularly if you have a complex app with many facets. The most commonly stupid thing that gets changed by simply opening the IDE or building is the "DEBUG_PORT" option under RunnerSettings. My opinion is if it's dynamically allocated why not have a value of "Dynamic"? misc.xml. This file also contains plugin configuration. Some settings look handy to share and others look more for personal config. Eg the IvyIDEA plugin puts an absolute path to your ivy config file. The module files. These are mostly left alone but an example of needless overwritting is the IvyIDEA plugin putting details of the local ivy-cache location in this file. But again this is the plugin's fault and not really Jetbrains.

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

    Кристиан.