Добавление перехвата при обновлении в mercurial (hg)

#mercurial #hook #updates

#mercurial #перехват #Обновления

Вопрос:

В настоящее время я работаю над проектом, который находится под mercurial контролем, и я хотел получить привязку при обновлении для редактирования .htaccess заполнения, чтобы избежать изменения APPLICATION_ENV в соответствии с «режимом», в котором приложение должно запускаться / загружать конфигурации / подключаться к базе данных.

Структура моего репозитория выглядит следующим образом :

 Main dev repo (ENV : development)
     -- Stable repo (Production version) (ENV : production)
     -- Local dev repo (working version) (ENV : development)
         -- Prototype repo (prototyping repo) (ENV : prototype)
  

Следующая часть .htaccess , которую я хотел бы отредактировать, является следующей (первые строки файла) :

 # Application var
SetEnv APPLICATION_ENV development
  

Я не возражаю против запуска python скрипта (или любого другого языка) Я ищу правильный перехват, чтобы поместить в .hghgrc файл

Ответ №1:

Это неправильно, поскольку это изменило бы фактический файл. Следующий ваш коммит фактически зафиксирует это изменение в вашем репозитории.

Вместо этого рекомендуемый подход заключается в выполнении следующего:

  1. Создайте файл шаблона и зафиксируйте его в своем репозитории, т.Е. .htaccess.template
  2. Добавьте фактический файл, .htaccess в .hgignore файл, чтобы заставить Mercurial избежать этого
  3. Локально создайте копию из файла шаблона в фактический файл, а затем отредактируйте это

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

Некоторые системы конфигурации также поддерживают условные включения, так что вы можете сделать что-то вроде if extra config file X exists, load X as well , а затем вместо этого выполните следующее:

  1. Передайте фактический файл в репозиторий, но сделайте его простым, содержащим значения по умолчанию
  2. Завершите файл таким include-заявлением
  3. Добавьте имя файла, который вы включаете в .hgignore файл, чтобы не передавать такой файл в репозиторий

Это гарантировало бы, что любой может дополнить или переопределить конфигурацию по умолчанию, добавив свою собственную версию этого файла, который будет включен.