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