Используйте git smudge/clean для замены содержимого файла
Я пытаюсь использовать git для управления развертыванием на моем живом веб-сайте. Проблема в том, что у меня есть пара файлов настроек, которые я не хочу обновлять, когда я запускаю в производство
то, что я пытаюсь сделать, это использовать хук или smudge / clean для изменения содержимого файла, например, из
<?php
define('DB_NAME', 'live');
define('DB_HOST', '127.0.0.1');
define('DB_USER', 'live_user');
define('DB_PASS', 'livePass');
в
<?php
define('DB_NAME', 'local');
define('DB_HOST', '127.0.0.1');
define('DB_USER', 'local_user');
define('DB_PASS', 'localPass');
Есть ли кто-нибудь, кто мог бы поговорить со мной через процесс, пожалуйста
Я задумался об использовании хука post-receive и сценария оболочки для замены содержимого, но в идеале я хочу, чтобы содержимое репозитория было изменено до запуска git checkout -f, не изменяясь в оперативной копии после
2 ответа
в идеале я хочу, чтобы содержимое репозитория изменялось до запуска git checkout -f не изменяется в оперативной копии после
Наиболее близким является драйвер содержимого фильтра, который заменит значение на git checkout
,
(со страницы книги Pro Git Скотта Шэкона по атрибутам Git: раздел "Расширение ключевых слов")
Так что в вашем случае: пятнистый фильтр, объявленный в .gitattributes
файл.
См. " Может ли git автоматически переключаться между пробелами и табуляциями?", За исключением того, что вы использовали бы sed для замены local на live (как в этом примере)
Я думаю, вы должны прочитать тему Настройка Git - атрибуты Git в Git Book от начала до конца, чтобы иметь полную картину, но особенно внимательно осмотрите часть "Расширение ключевого слова", где пользовательские скрипты, сделанные вручную, используются для покрытия KEYWORD в репозитории, чтобы ЗАКЛЮЧИТЕЛЬНЫЙ ТЕКСТ в рабочем каталоге (и обратно). Это любой код, который может быть выполнен на хосте с рабочим каталогом, на который ссылается файл.gitattributes.
Примечание. Поскольку у вас должны быть разные выходные данные чистых фильтров (для локального и живого), у вас может быть два слегка отличающихся (по содержанию) чистых скрипта для локального и живого Working Dir под общим именем файла (в примере очистки книги результат одинаковый для всех местоположений - используется один скрипт).