Поддержка приложения для нескольких клиентов параллельно?
Есть крупный проект на PHP. Код лежит в SVN в нескольких репозиториях. При разработке успешно используются ветки и таги, каждое задание делается в отдельной ветке. В принципе все ок, конфликты возникают только при мерже старых веток. Все было хорошо, но недавно появилась необходимость поставлять этот проект нескольким клиентам. Это будут урезанные версии продукта, немного отличающиеся для каждого клиента. Возможно у каждого клиента еще будут какие-то специфические фичи.
Внимание вопрос. Как все это менеджить теперь?
Я думал вести для каждого клиента отдельную ветку, время от времени вливать в ветку изменения из транка и делать в ветке клиента только совсем специфические для него фичи. Но почитал, что вести параллельные долгоживущие ветки в SVN (да и в любой другой системе контроля версий) — западло. Все советуют просто сделать модульную архитектуру и держать в основной ветке все фичи, а далее для конкретного клиента делать специфические сборки. Но есть проблемы:
1. Модульность пока реализована в половине проекта, и реализовать ее в полном объеме непросто и долго
2. Я не могу помещать все возможные фичи в сборки всех клиентов и просто делать некоторые их них неактивными (как многие советуют). Если чего-то не должно быть в коде — его действительно быть не должно.
3. Меня угнетает тот факт, что в SVN у меня не будет истории проекта для конкретного клиента.
Сейчас мне наверное напишут, что вместо SVN надо использовать GIT. Ну а вот реально, кто-то в гите ведет параллельные ветки длительное время?
Да, я веду в одном репозитории долгоживущие ветки для разных клиентов.
В Git нет никаких проблем с подобными рабочими процессами. И вариантов работы много, выбирайте тот, который подходит к конкретной ситуации.