Как я могу отслеживать системные конфигурационные файлы в репозитории / проекте?

У меня есть проект ruby, и хост базы данных и порт могут отличаться на dev и production. Мне нужен способ получить разные значения для них в моих сценариях для двух сред.

Проект должен быть завершен - поэтому должен быть какой-то способ указать значения по умолчанию. Я не хочу, чтобы клону не хватало файлов конфигурации. Поэтому игнорирование их полностью не сработает.

Как вы решаете эту проблему с помощью git?

1 ответ

Решение

Я бы порекомендовал использовать:

  • файл конфигурации шаблона (файл с именем переменной вместо хоста и значением порта)
  • сценарий, способный заменить имена этих переменных соответствующими значениями в зависимости от среды (определяется сценарием)

Решение Git - это драйвер фильтра атрибутов git (см. Также книгу GitPro).

Драйвер фильтра состоит из clean командование и smudge команда, любую из которых можно оставить неуказанной.
на checkout, когда smudge указана команда, команда получает объект blob из стандартного ввода, а стандартный вывод используется для обновления файла рабочего дерева.
Точно так же clean Команда используется для преобразования содержимого файла рабочего дерева при регистрации.

Таким образом, скрипт (управляемый с помощью Git), на который ссылается smudge, может заменить все переменные значениями, специфичными для окружения, в то время как чистый скрипт восстановит свое содержимое в нетронутом файле конфигурации.

чистое пятно

Когда вы извлекаете репозиторий Git в среде prod, процесс smudge создаст в конечном рабочем файле файл конфигурации, похожий на prod.

Другие вопросы по тегам