DexterHD
@DexterHD
Software Engineer, Teamlead, CTO

Игнор в Mercurial?

В общем такой вопрос.

Есть центральный репозиторий. Там лежит файл например config.php

в котором хранятся настройки путей и настройки подключения к БД.


Допустим у меня есть локальный сервер, у второго разработчика тоже локальный сервер.

Он и я клонируем себе данный репозиторий, меняем в файле config.php некоторые строки под себя.


Далее при загрузке в центральный репозиторий файл по умолчанию будет меняться.


Как заставить Mercurial игнорировать данный файл, но тем не менее скачивать его

при клонировании с репозитория?


если добавить его в hgignore, то файл не будет при клонировании в локальном репозитории

создаваться вообще. А нужно чтобы он создавался.
  • Вопрос задан
  • 4559 просмотров
Пригласить эксперта
Ответы на вопрос 4
mark_ablov
@mark_ablov
стандартная практика — создать config.local.php, который будет мержится с перезаписью с основным конфигом.
и его уже пихать в игнор.
Ответ написан
Можно создать файл config.php.template и в нем хранить все основные настройки, а файл config.php добавить в игнор и в нем хранить кастомные настройки. При клонировании нужно просто config.php.template скопировать в config.php и поправить config.php если нужно.
Ответ написан
Комментировать
@resurection
Эта задачка не должна решаться системой контроля версий.
Вместо этого надо создать несколько конфигов под каждый сервак и сделать пачку
if () { подключаем_конфиг_1 }
elseif () { конфиг_2 }


На хабре была статья как это сделать. Не могу найти, но вкратце как я реализовал это в своём велосипеде:
Есть иерархия файлов-настроек:
/settings.php
/settings/live.php
/settings/dev.php
/settings/dev/htmler.php
/settings/dev/resurection.php
/settings/dev/resurection/notebook-hp.php

Все файлы у меня синхронизируются между компами и если я запускаю на своём стационаре, то подключается каскад файлов:
/settings.php
/settings/dev.php
/settings/dev/resurection.php

А если запускаю на ноуте, то дополнительно подключится ещё
/settings/dev/resurection/notebook-hp.php

При этом, settings.php содержит абсолютно все настройки в виде массива. Дочерние файлы могут переопределять некоторые настройки.
Например, /settings/dev.php содержит всего одну строчку:
$settings['debugMode'] = true;

Кстати, на боевой сервак я всё заливаю через меркуриал и в меркуриале есть ветка live которая разворачивается на серваке и является «дырявой версией». В неё не попадают некоторые файлы в т.ч. настройки для моего локальной тачки. Там только два файла:
/setting.php
/settings/live.php.
Ответ написан
Комментировать
@gro
Пардон, за некропостинг: blgo.ru/blog/2011/01/26/config-joint-platform/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы