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

Иногда я работаю с Codeigniter, и после того, как я закончу разработку на локальном сайте, мне нужно перенести файлы на сервер. Все файлы в /config/ папку необходимо изменить в соответствии с настройками сервера. Неправильно делать полный коммит для этих изменений, я просто заставляю Git полностью игнорировать эти файлы, или есть способ отследить эти изменения и применить их с Git в нужный момент?

3 ответа

Решение

Вы можете сохранить версию:

  • два "файла конфигурации значений" с правильными значениями для каждой среды
  • файл конфигурации шаблона со значением-заполнителем в нем (например, @@PORT_NUMBER@@)
  • скрипт, способный генерировать фактический конфигурационный файл в зависимости от текущей среды
  • драйвер фильтра содержимого, который при оформлении заказа запустит скрипт, чтобы сгенерировать правильный файл конфигурации.

драйвер фильтра содержимого

Примечание: это предполагает, что ваш файл конфигурации шаблона имеет распознаваемое содержимое (фильтр не имеет имени или пути к файлу). Смотрите " Git эквивалент Subversion's $URL$ расширение ключевых слов "(подробнее об ограничении драйвера фильтра содержимого git).

Создайте две папки в 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

Это зависит от ваших потребностей. В моей компании мы используем другой подход. Мы создали несколько сред (где звездочкой является внутреннее имя проекта):

  • devel - сайт работает на домене **. local.com *
  • test - сайт работает на домене test.*.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? Есть раздел об этом.

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