Как я могу отслеживать системные конфигурационные файлы в репозитории / проекте?
У меня есть проект ruby, и хост базы данных и порт могут отличаться на dev и production. Мне нужен способ получить разные значения для них в моих сценариях для двух сред.
Проект должен быть завершен - поэтому должен быть какой-то способ указать значения по умолчанию. Я не хочу, чтобы клону не хватало файлов конфигурации. Поэтому игнорирование их полностью не сработает.
Как вы решаете эту проблему с помощью git?
1 ответ
Я бы порекомендовал использовать:
- файл конфигурации шаблона (файл с именем переменной вместо хоста и значением порта)
- сценарий, способный заменить имена этих переменных соответствующими значениями в зависимости от среды (определяется сценарием)
Решение Git - это драйвер фильтра атрибутов git (см. Также книгу GitPro).
Драйвер фильтра состоит из
clean
командование иsmudge
команда, любую из которых можно оставить неуказанной.
наcheckout
, когдаsmudge
указана команда, команда получает объект blob из стандартного ввода, а стандартный вывод используется для обновления файла рабочего дерева.
Точно так жеclean
Команда используется для преобразования содержимого файла рабочего дерева при регистрации.
Таким образом, скрипт (управляемый с помощью Git), на который ссылается smudge, может заменить все переменные значениями, специфичными для окружения, в то время как чистый скрипт восстановит свое содержимое в нетронутом файле конфигурации.
Когда вы извлекаете репозиторий Git в среде prod, процесс smudge создаст в конечном рабочем файле файл конфигурации, похожий на prod.