Конфигурирование конкретных машин
Я хочу работать из нескольких мест, например, на веб-сайте. Каждый компьютер имеет свой собственный репозиторий проекта (предпочтительно Mercurial, Git в противном случае), но каждый компьютер нуждается в своих собственных настройках конфигурации для локального тестирования, например base_url. Каков наилучший способ создания версий этого конфигурационного файла, который будет также включать глобальные настройки конфигурации?
Репозиторий детали:
- Репо на BitBucket с config.php: глобальный config + config для живого сервера
- Repo pc A с config.php: глобальный config + config, специфичный для pc A
- Repo pc B с config.php: глобальный config + config, специфичный для pc B
Когда я проверяю хранилище BitBucket, я получаю полную конфигурацию живого сервера. Если мне нужно внести коррективы и проверить это локально, я изменяю текущие настройки на конкретные настройки ПК. Затем исправьте ошибку или что-то еще, зафиксируйте и отправьте в BitBucket. В этот момент конкретные настройки ПК будут перенесены в глобальное хранилище BitBucket: не то, что я хочу.
Так какой же лучший способ сделать это правильно?
3 ответа
Я не очень знаком с php, но я предполагаю, что у вас может быть глобальный файл config.php, который может включать (требовать?) config.<hostname>.php
файлы. Таким образом, все файлы конфигурации будут находиться под контролем версий, но не будет никаких конфликтов. PHP должен иметь какой-то способ определения имени хоста текущей машины и затем загрузки соответствующего файла конфигурации.
Результирующий макет хранилища может выглядеть следующим образом
/
/config.php
/config.web_server.php
/config.pc_A.php
/config.pc_B.php
Что вам нужно, так это чистый сценарий, который меняет конфигурацию в зависимости от того, на какой машине вы находитесь.
https://git-scm.com/docs/gitattributes
https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes
Если вы хотите отслеживать конфигурацию каждого ПК в отдельной ветке, внесите изменения в конфигурацию, а затем объедините ваши изменения с веткой, которую вы выставили на общем пульте, но игнорируя ваши изменения.
git merge --no-ff -s ours yourbranch
Отныне вы можете объединяться из своей ветки, но ваши изменения конфигурации никогда не будут объединены, так как это уже считается объединенным в соответствии с DAG.
Надеюсь это поможет.
Я хотел бы сделать config.php прозрачным. Само хранилище не должно заботиться о том, в какой среде оно работает. Я не знаю, что вам нужно изменить, чтобы запустить это в вашем случае, но, возможно, поднимите функциональность из вашего config.php в некоторые настройки, которые в свою очередь читаются config.php.