Android studio - весь каталог .idea должен быть в git ignore?

137

Я видел много примеров .gitignoreфайлов для AndroidStudio , некоторые из .ideaних есть, а некоторые нет.

Есть ли веская причина не добавлять весь .idea dir в .gitignore?

Если это не следует полностью игнорировать, существуют ли конкретные файлы внутри .idea (например, .iml), которые должны находиться в .gitignore?

DORS
источник
Я игнорирую, .ideaза исключением некоторых файлов в .idea/runConfigurations/.
Даниил
1
суперсет: stackoverflow.com/questions/16736856/…
Сиро Сантилли 法轮功 冠状 病 六四 事件 法轮功

Ответы:

104

Вы можете взглянуть на эту страницу:

IntelliJ документ о конфигурационных файлах проекта

В «формате на основе каталогов» интересна конкретная строка:

Каталог .idea содержит набор файлов конфигурации (.xml). Каждый файл содержит только часть данных конфигурации , относящихся к определенной функциональной области , которая находит свое отражение в имени файла, например, compiler.xml, encodings.xml, modules.xml.

Почти все файлы содержат информационное ядро ​​самого проекта, например, имена и расположение его компонентов, настройки компилятора и т. Д. Таким образом, эти файлы могут (и должны) храниться под контролем версий.

Тем не менее, я ненавижу делать проект зависимым от IDE (в настоящее время я работаю над проектом, созданным с помощью NetBeans, и мне больно использовать его с Eclipse, который становится стандартом моей компании).

Итак, чтобы ответить на ваш вопрос:

  1. Если вы не используете что-то вроде Maven или Gradle для управления зависимостями и сборки: держите каталог под контролем версий . Таким образом, правильная конфигурация проекта и зависимостей будут доступны каждому. Напротив, все разработчики должны будут настроить свою среду точно так же, как вы определяете ее в файлах конфигурации.
  2. Если вы используете что-то вроде Maven или Gradle: правильно настройте эти инструменты и не держите каталог под контролем версий . На самом деле, вся информация, содержащаяся в файлах конфигурации, должна храниться в файлах Maven / Gradle. Затем позвольте вашим разработчикам настроить IDE в зависимости от среды. Таким образом, использование Eclipse, IntelliJ, Linux, Windows ... больше не будет проблемой.
mithrop
источник
9
Обратите внимание на следующий абзац: «Исключением является файл workspace.xml. Он хранит ваши личные настройки ... Поэтому маловероятно, что вы захотите поделиться этим файлом с коллегами».
Дальбергия
40

Итак, после некоторых ответов «Да» и «Нет» я добавляю ответ «Да и нет» :)

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

Вы определенно не хотите использовать вашу IDE для своей конфигурации сборки, но вы можете поделиться настройками в команде. Вот почему вы должны игнорировать только часть .ideaконтента (например , в librariesпапку и modules.xmlфайл), но держать других в системе управления версиями (например copyright, dictionariesи inspectionProfilesпапки и файлы в .ideaкак dynamic.xml, codeStyleSettings.xmlи т.д.).

JBaruch
источник
Как конкретно будет обращаться к файлам IML?
Дорс
1
IML файлы обязательно должны быть проигнорированы.
JBaruch
1
Я все еще думаю, что конфигурации не должны храниться в IDE-зависимых файлах, поэтому Maven / Gradle так лучше это делать.
Митроп
@mithrop, дело в том, что вы не можете объявить этот тип конфигурации в файле Maven / Gradle. Это собственный формат Idea, и у него нет переносимых альтернатив в Maven / Gradle.
JBaruch
Ах да, ты прав. В любом случае, если вы не можете поместить его в файлы maven / gradle, у вас возникнет проблема со следующим импортированием проекта в другую IDE (с этой проблемой я не хочу справляться). Но я полностью согласен с вами (если прочитаете мой ответ, вы увидите, что я на самом деле): вы включаете файлы или нет в зависимости от ваших потребностей :)
mithrop
7

Концепция сохранения конфигурации проекта в ВК действительна. Я сделал это с моей командой, потому что все наши разработчики использовали PHPStorm для наших проектов, и поэтому имело смысл сохранить общую конфигурацию ... в концепции. Мы хотели использовать те же файлы словарей, те же стандартные правила кодирования и те же конфигурации плагинов.

Причина, по которой я квалифицирую это как «в концепции», заключается в том, что были проблемы с папкой JetBrains .idea, из-за которой мы не могли ее использовать. Вероятно, это были проблемы, которых можно было бы избежать или исправить, но нам было неясно, как это сделать правильно, и мы считаем, что это вина JetBrains, потому что, как разработчики, у нас нет ни времени, ни желания искать решения о том, как сделать наша IDE работает правильно.

При этом, проблемы были следующие:

  • Симлинкинг папок проекта не работает правильно. Когда я настраиваю свои проекты, я помещаю их в свой домашний каталог. Мы обнаружили, что проект настроен так, чтобы использовать точную символическую ссылку, а не просто рассматривать ее как конкретный каталог. Это означает, что если другой разработчик хранит свой проект в другом месте или просто не использует символические ссылки, весь каталог будет отсутствовать в навигаторе проекта, поскольку он буквально ищет символическую ссылку. Что еще хуже, я никогда не мог найти это значение пути в конфигурации. Мы не смогли найти точную конфигурацию в файлах, составляющих нашу папку .idea.
  • Файлы определений по умолчанию разделены на пользователей. Это означает, что если я хочу добавить слово в свой словарь, оно будет указано как определение для меня, jgreathouse, но у других пользователей будет свой собственный раздел определения. Помеченные слова по-прежнему будут отображаться как орфографическая ошибка для других пользователей. Это не желательно. Причина, по которой я добавляю его в файл определения, заключается в том, что IDE неверна. Я хочу, чтобы эти определения были интуитивно понятны другим пользователям.
  • Коллеги продолжали перезаписывать конфигурации, потому что их IDE будет перезаписывать конфигурации с их конфигурацией, которая в данный момент находится в памяти. Я имею в виду, что разработчик будет работать и объединять свой репозиторий из источника, который будет содержать изменение конфигурации проекта, вместо изменения конфигурации IDE или даже предоставления им выбора, он автоматически перезапишет конфигурацию .idea с помощью текущая конфигурация в памяти их IDE. По моему мнению, это делает конфигурацию .idea непригодной для использования в качестве общей конфигурации. Чтобы обойти это, разработчику буквально придется закрыть тот экземпляр своей IDE, вытащить репозиторий и снова открыть свою IDE. Не имеет смысла сохранять общую конфигурацию, если среда IDE мгновенно перезаписывает ее конфигурацией, которая в данный момент находится в памяти. Это'

Я делал такие типы общих IDE-конфигураций в VC раньше с Visual Studio и Netbeans, и это всегда было хорошо; но с .idea он кажется просто непригодным, что разочаровывает. Хотелось бы, чтобы JetBrains взобрался на него и сделал его более удобным для пользователя.

Джесси Грейтхаус
источник
> вместо того, чтобы их IDE меняли конфигурации или даже предоставляли им выбор, он автоматически перезаписывал бы конфигурацию .idea текущей конфигурацией в памяти их IDE. Вау, это действительно неудачно. Хорошо знать!
Грег Прайс