Каков правильный способ поддерживать "версию для сервера" - только с измененными конфигурационными файлами, в Git?
Я иногда работаю с Codeigniter, и после того, как я закончил разработку на локальном сайте, мне нужно перенести файлы на сервер. Все файлы в папке /config/
должны быть изменены в соответствии с настройками сервера. Неправильно делать целую фиксацию для этих изменений, просто я просто Git игнорировать эти файлы вообще или есть способ отслеживать эти изменения и применять их с Git в нужный момент?
Ответы
Ответ 1
Вы можете сохранить версию:
- два "файла конфигурации значений" с правильными значениями для каждой среды
- конфигурационный файл шаблона со значением в нем (например,
@@[email protected]@
)
- a script способен генерировать фактический файл конфигурации в зависимости от текущей среды
- a фильтр фильтра содержимого, который при проверке вызовет script, чтобы создать правильный файл конфигурации.
![content filter driver]()
Примечание. Предположим, что ваш шаблонный файл конфигурации имеет узнаваемый контент (фильтр не имеет имени или пути файла). См. "Git эквивалент расширения ключевого слова subversion $URL$
для получения дополнительной информации об ограничении драйвера фильтра содержимого git).
Ответ 2
Это зависит от ваших потребностей. В моей компании мы используем другой подход.
Мы создали несколько сред (где asterix - это внутреннее имя проекта):
- devel - сайт работает на домене **. local.com *
- тест - сайт выполняется на тест домена. *. company.com
- бета - бета. *. company.com
- продукция - любой другой домен.
На основе имени домена мы автоматически переключаем конфигурации.
Обычно файл конфигурации выглядит так:
<?php
return array(
'_env' => array(
'devel' => array(
// config for devel
),
'production' => array(
// config for production
)
)
);
?>
Некоторые фреймворки (AFAIR Zend) задают имя среды в конфигурации виртуального хоста (или .htaccess). Вы должны посмотреть на: пробный тест производства автоматического переключения zend framework и т.д.
Вы посмотрели документацию CI? В этом разделе .
Ответ 3
Создайте две папки в папке config
. Один называется development
, а другой - production
. Теперь скопируйте config.php, database.php и т.д. В каждую из этих папок. Теперь, когда вы находитесь на рабочем сервере, CodeIgniter сначала проверит папку production
для файлов. Если его нет, то он использует файл по умолчанию в папке config
. И если вы находитесь в среде разработки, CodeIgniter сначала проверит папку development
.
Если вы хотите, чтобы любой файл конфигурации был идентичен среде производства и разработки, храните его в папке config
.
Если вы хотите установить среду, добавьте следующий код в файл .htaccess:
#This code for Development Environment
SetEnv CI_ENV development
и
#This code for Production Environment
SetEnv CI_ENV production