В зависимости от того, насколько вам нужен каждый проект, самым простым способом может быть создание отдельного дерева шаблонов для каждого клиента, которое имеет приоритет над базовым набором. Как в
base/template1.html
customer/template1.html
Для любой страницы сначала выполняется поиск в каталоге клиента. Для этого вам не нужно много магии управления версиями, но под-репозитории могут быть удобны.
Вы можете отслеживать изменения каждого клиента в виде набора патчей, используя mq
(Mercurial queues). Может быть немного сложно объединить наборы патчей.
Вы можете сделать то же самое с rebase
, потенциально более элегантным, чем mq
, но я не уверен, как поделиться наборами ребаз.
Или вы можете просто оставить базовый репозиторий и отделить репозитории от каждого клиента, которые никогда не возвращаются в базу.
В каждом случае ваша жизнь (слияние) будет намного проще, если вы организуете свой проект так, чтобы настройки для каждого клиента были ограничены, чтобы они с меньшей вероятностью конфликтовали с изменениями в базовом продукте.