Конфигурирование конкретных машин - PullRequest
4 голосов
/ 25 апреля 2011

Я хочу работать из нескольких мест, например, на веб-сайте. Каждый компьютер имеет свой собственный репозиторий проекта (желательно Mercurial, Git в противном случае), но каждый компьютер нуждается в своих собственных настройках конфигурации для локального тестирования, например base_url. Каков наилучший способ создания версий этого конфигурационного файла, который также будет включать глобальные настройки конфигурации?

Данные хранилища:

  1. Репо в BitBucket с config.php: глобальная конфигурация + конфигурация для живого сервера
  2. Repo pc A с config.php: глобальный config + config, специфичный для pc A
  3. Repo pc B с config.php: глобальный config + config, специфичный для pc B

Когда я извлекаю хранилище BitBucket, я получаю полную конфигурацию живого сервера. Если мне нужно внести изменения и проверить их локально, я изменяю текущие настройки на конкретные настройки ПК. Затем исправьте ошибку или что-то еще, зафиксируйте и отправьте в BitBucket. В этот момент специфические настройки компьютера будут перенесены в глобальное хранилище BitBucket: не то, что я хочу.

Так, каков лучший способ сделать это правильно?

Ответы [ 3 ]

3 голосов
/ 25 апреля 2011

То, что вам нужно, - это чистый сценарий, который меняет конфигурацию в зависимости от того, на какой машине вы находитесь.

https://git -scm.com / Docs / gitattributes

https://git -scm.com / книга / а / v2 / Customizing-Гит-Гит-атрибуты # _keyword_expansion

Если вы хотите отслеживать конфигурацию каждого ПК в отдельной ветке, внесите изменения в конфигурацию, затем объедините ваши изменения в ветку, которую вы выставили на общем пульте, но игнорируя ваши изменения

git merge --no-ff -s ours yourbranch

Отныне вы можете объединяться из своей ветви, но ваши изменения конфигурации никогда не будут объединены, так как это уже считается слиянием в соответствии с DAG.

Надеюсь, это поможет.

1 голос
/ 25 апреля 2011

Я не очень знаком с php, но я предполагаю, что у вас может быть глобальный файл config.php, который может включать (требовать?) config.<hostname>.php файлы.Таким образом, все файлы конфигурации будут находиться под контролем версий, но не будет никаких конфликтов.PHP должен каким-то образом определить имя хоста текущего компьютера и затем загрузить соответствующий файл конфигурации.

Получившийся макет хранилища может выглядеть следующим образом

/
/config.php
/config.web_server.php
/config.pc_A.php
/config.pc_B.php
0 голосов
/ 25 апреля 2011

Я бы сделал config.php прозрачным.Само хранилище не должно заботиться о том, в какой среде оно работает.Я не знаю, что вам нужно изменить, чтобы запустить это в вашем случае, но, возможно, поднимите функциональность из вашего config.php в некоторые настройки, которые в свою очередь читаются config.php.

...