У меня есть система, которую мне нужно продублировать в нескольких системах и внести незначительные изменения, такие как change less / css переменные и файлы конфигурации.
Есть ли лучший способ решения подобных проблем?
В настоящее время я делаю:
git clone repo
cp ../default/config.js config.js
... for several files
или я должен создавать разные ветки одного репо
или я должен создать репо для изменений?
В настоящее время это выполнимо, но будет раздражать, если я получу более 5 подобных систем.
Рассмотрите возможность объединения git и puppet для модели развертывания. Пока git может работать напрямую, это больно (ИМХО).
Шаблоны в марионетке очень хорошо работают с файлами конфигурации, которые зависят от системы. Опция файлов шаблонов хорошо работает для статического развернутого контента.
В этом случае есть как минимум две часто используемые модели. Git можно использовать для развертывания большей части вашего контента из одного репозитория, а вторая конфигурация - только репозиторий git файлов конфигурации марионетки, используемый для каждого содержимого сервера.
Также можно хранить файлы содержимого и конфигурации в одном репозитории, но для нормальной работы могут потребоваться некоторые изменения рабочего процесса.
РЕДАКТИРОВАТЬ:
Я больше всего знаком с Puppet, но насколько я понимаю, Chef и cfengine предоставляют схожие функции.
При совместном использовании файлов git и puppet одной чрезвычайно полезной функцией является сопоставление ветвей git с отдельными средами. Это упрощает переход от контроля качества к продукту даже для ваших файлов конфигурации.
У меня аналогичная ситуация, и я бы использовал разные ветки, так как было бы проще, если бы вам не нужно было ничего менять в своем коде в будущем. Но это не мой случай и, вероятно, не ваш.
Я рекомендую вам использовать сценарий для настройки вашей конфигурации и продолжать использовать ту же ветку в репозитории.