Это может свестись к мнению: Я задаюсь вопросом, должны ли файлы проекта (файлы, сгенерированные и используемые IDE а не компилятором), быть включены в репозитории управления исходным кодом. Есть ли определенные случаи, где они должны, и не был должен?
Править: Я должен упомянуть, что причина, которую я спрашиваю, состоит в том, потому что я смотрю на некоторые списки файлов, которые будут проигнорированы мерзавцем при использовании Visual Studio - некоторые из этих списков имеют файлы проекта, и некоторые не делают.
Один простой вопрос: нужны ли вам они для построения кода? Если нет, то это артефакты, а не исходные файлы, и им не место в системе управления версиями.
Такие вещи, как настройки цвета вашего редактора или сочетания клавиш, не являются частью системы сборки. Флаги компилятора и так далее.
Мы храним все , что необходимо для сборки, вплоть до установочных дисков операционной системы и необходимой конфигурации. Anal-retentive даже близко не подходит для того, чтобы описать нас :-) Если бы мы могли хранить оборудование, мы бы это сделали (мы должны ограничиться хранением документа с подробными характеристиками оборудования).
Мы также время от времени тестируем нашу способность создавать среду разработки с нуля, используя только то, что хранится в репозиториях. Отказ означает, что мы не защищены с точки зрения аварийного восстановления.
Мне проще и логичнее включать файлы проекта в репозитории, поскольку они являются частью самого проекта . Изменения проекта, файлы проекта тоже.
Когда вам нужно вернуть весь проект в предыдущее состояние или пригласить кого-нибудь, чтобы он работал над проектом, гораздо удобнее иметь каждый файл . Не только исходный код.
Между прочим, большинство IDE включают файлы проекта в репозитории, и будет слишком болезненно исключить их, сохранив при этом возможность регистрации и возврата из самой IDE.
Если вы работаете с другими разработчиками, а они не используют другие IDE или другие версии IDE, файлы проектов IDE не будут одинаковыми. Я думаю, что файлы проектов IDE не должны помещаться под контроль исходного кода.
Если у вас есть специальные скрипты сборки, это может потребоваться IDE для сборки вашего проекта. К тому же, если вы делаете новую проверку, неужели вы хотите каждый раз настраивать все параметры сборки проекта и т.д.?
.Как правило, файлы проекта должны контролироваться по версиям, но файлы предпочтений пользователя должны игнорироваться.
Например, при использовании Visual Studio, файлы '.proj' и '.sln' должны контролироваться по версиям, но '.suo' должны игнорироваться.
Я думаю, что для .NET файлы проекта должны быть включены в репозитории системы контроля версий. В C # и VB именно файл проекта определяет, какие исходные файлы являются частью сборки. Если вы добавляете исходный файл в проект и не имеете файла проекта в системе управления версиями, все остальные разработчики в группе должны вручную добавить файл в СВОЙ проект.
В Java все файлы в дереве исходных текстов автоматически включаются в сборку (если я правильно помню), поэтому потребность в файле проекта в Java может быть другой.
Мы используем Eclipse, и единственный файл, который мы регистрируем, - это файл .classpath, чтобы любые изменения пути к классам не нарушали сборку при обновлении.
Файлы проекта, содержащие инструкции по сборке, обязательно должны находиться под контролем источника. Вы же не хотите устанавливать правильные флаги компилятора и компоновщика и путь для каждой новой проверки, не так ли?
Однако не все файлы проекта создаются одинаковыми, а некоторые являются просто «вспомогательными файлами», в которых хранятся теги или недавно открытые файлы. и так далее. Версии для них не должны быть, так как они могут отличаться для каждого разработчика.
Есть два разных преимущества от файлов проекта с управлением версиями:
Да, я считаю, что файлы проекта IDE должны быть зафиксированы в Subversion, так как большая их часть включает конфигурации для сборки/компиляции проекта.
Если есть конфигурации, которые используются исключительно для хранения предпочтений разработчиков, не относящихся к кодовому соглашению, то они должны быть удалены (т.е. исключены), чтобы не вносить путаницу.
Я работаю в компании, которая разрабатывает и продает IDE. Вначале мы удалили все файлы проекта из пользовательских каталогов. Большинство людей были довольны этим путем. Но время от времени кто-то спрашивал, возможно ли это, потому что они хотели работать также из своей домашней системы и использовать контроль версий в качестве утилиты для быстрой передачи файлов, синхронизирующей работу и домашнее место.
Могу вам сказать, что выполнить эту просьбу было непросто!
Настройки должны быть четко разделены, например, если ваша IDE хранит координаты окон в файле настроек, и вы работаете в системе с двумя мониторами на работе, а дома - в маленьком ноутбуке, это действительно плохо. IDE также должна обеспечивать способ обработки расширения переменных среды в каждом пути к файлу. И, наконец, конечно, он должен иметь возможность давать файлам настроек индивидуальные имена или хранить их в разных местах - иначе вы скоро обнаружите, что 3 разных разработчика проекта имеют 5 разных мнений о шрифтах, цветах, значениях по умолчанию и т. Д., Потому что если это сделано не очень хорошо, они все будут использовать одни и те же настройки.
С другой стороны, многие IDE имеют огромные объемы данных для хранения, некоторые из них даже хранят примеры модульных тестов с графическим интерфейсом пользователя в настройках проекта. В этом случае, конечно, полезно повторно использовать файлы и зарегистрировать их в системе контроля версий.
Как видите, это зависит от обстоятельств. Попробуйте и посмотрите, как это работает в вашей среде.
Не уверен, упоминалось ли это, но Visual Studio (по крайней мере, версия C ++) создает два файла проекта: