Каков правильный способ поддерживать "версию для сервера" - только с измененными конфигурационными файлами, в 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