Усі в нашій команді використовують IntelliJ IDEA, і нам здається корисним розмістити файли проектів (.ipr та .iml) у керуванні джерелами, щоб ми могли ділитися конфігураціями, налаштуваннями та інспекціями побудови. Крім того, ми можемо використовувати ці параметри перевірки на нашому сервері безперервної інтеграції з TeamCity. (У нас є .iws файл робочого простору для користувача у файлі .gitignore, а не в контролі джерела.)
Однак ці файли змінюються мало, коли ви робите майже будь-що в IDEA. Існує проблема в базі даних випусків IDEA для нього ( IDEA-64312 ), тому, можливо, можна вважати цю помилку в IDEA, але це те, з ким нам потрібно жити в осяжному майбутньому.
До недавнього часу ми використовували Subversion, але нещодавно ми перейшли на Git. Кожен із нас просто звик до списку змін файлів проектів, які ми ігнорували та не перевіряли, якщо не було змін у файлі проекту, якими ми хотіли поділитися з іншими. Але в Git реальна потужність, здається, є (з того, що ми досліджуємо) безперервним розгалуженням, яке він заохочує, і перемиканням між гілками - це біль, коли файли проекту завжди змінювалися. Часто він може просто якось об'єднатись із змінами та намагається боротися зі змінами файлів проекту, які зараз застосовуються до нової гілки. Однак якщо нова гілка змінила файли проекту (наприклад, гілка працює над новим модулем, який ще не знаходиться в інших гілках), git просто видає помилку, яку вона не робить ' t не має сенсу об’єднуватись у файлах, коли обидві гілки мають зміни, і ви змінюєте локально, і я можу скоріше зрозуміти її суть. З командного рядка можна використовувати команду "-f" у команді "git checkout", щоб змусити її викидати локальні зміни та використовувати замість гілки, але (1) команда Git Checkout GUI в IDEA (10.5.1) Схоже, це не є варіантом, який ми можемо знайти, тому нам потрібно буде регулярно переходити до командного рядка, і (2) Ми не впевнені, що хочемо використовувати це прапор і говорить Git викинути наші місцеві зміни.
Отже, ось кілька думок, які ми маємо щодо варіантів, з якими ми маємо боротися з цим:
- Файли проекту повністю вийміть з контролю джерела. Помістіть їх у .gitignore та поширіть їх кожній особі та TeamCity за допомогою інших засобів, можливо, поставивши їх у джерело управління десь в іншому місці чи під іншими іменами. Наша команда досить мала, цей варіант є достатньо можливим для розгляду, але він не здається чудовим.
- Продовжуйте жити з цим, намагаючись бути впевненим, керувати, які файли у нас є, на яких гілках у даний момент часу. В рамках цього, ми можемо закликати кожного розробника мати більше однієї копії кожного проекту у своїй системі, щоб кожен міг перевірити їх в іншому відділенні, можливо, з різними наборами файлів проекту.
- Спробуйте мати лише проект (.ipr) у керуванні джерелами, а файли модуля (.iml) не у контролі джерела, а у файлі .gitignore. Головне, що, здається, регулярно перемикається самостійно в .ipr - це порядок конфігурацій спільної збірки, але, можливо, ми можемо просто поділитися інформацією окремо про те, як їх налаштувати. Я не зовсім впевнений, як IDEA має справу з подібними речами, маючи лише деякі свої файли, особливо, коли це стосується нового замовлення.
Напевно, я сподіваюся, що ми пропустили якесь очевидне (або неочевидне) рішення, можливо, маючи справу з величезною налаштованістю, яку, схоже, мають і Git, і IDEA. Але, схоже, ми не могли бути єдиною командою, яка має цю проблему. Питання, схожі на Stack Overflow, включають 3495191 , 1000512 та 3873872 , але я не знаю, як вони точно однакові, і, можливо, хтось може придумати свої плюси та мінуси для різних підходів, які я окреслені підходи, перелічені у відповідях на ці запитання, або підходи, які вони рекомендують.