Разветвление и разветвление в git совсем не плохо, так как поддержка слияния отличная (возможно, лучшая из всех VCM).
Лично мне не нравится идея ветвления или разветвления проекта, чтобы обеспечить различные настройки, поскольку это может очень быстро стать очень трудным, например, что вы собираетесь делать, если у вас есть 15 различных развертываний?
Я думаю, что лучший подход - это построить приложение, чтобы оно работало по-разному в зависимости от некоторых параметров. Я хорошо знаю, что иногда реализации очень разные, так что это может больше не быть полезным.
Другой подход заключается в создании ядра вашего приложения в GEM, который действует как служба для приложения, и единственное, что вы настраиваете для каждого клиента, - это представления. Конечно, GEM должен быть достаточно универсальным, чтобы предоставлять все необходимые вам услуги.
Пожалуйста, поделитесь с нами тем, что вы решили, так как нет лучшего ответа на ваш вопрос.