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