Файл условного ртути игнорирования - PullRequest
6 голосов
/ 21 декабря 2010

У меня есть файл в Mercurial, который я хочу, чтобы dev-машины извлекали файл, но я хочу, чтобы сервер развертывания НЕ извлекал файл (у него есть специальные моды, которых нет у dev-машин).Возможно ли это, или я должен просто иметь собственное решение push to server вместо того, чтобы просто делать hg pull?

Ответы [ 4 ]

6 голосов
/ 21 декабря 2010

Типичный способ сделать это - сделать следующее:

Вы сохраняете копию каждого файла в хранилище и правильно называете их.Например, если речь идет о web.config, вы должны сохранить следующие два в репозитории:

  • web.server.config
  • web.dev.config

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

if "%COMPUTERNAME%" == "SERVER" copy web.server.config web.config
if not "%COMPUTERNAME%" == "SERVER" copy web.dev.config web.config

Тогда вы проигнорируете сам файл web.config через.hgignore:

glob:web.config
2 голосов
/ 04 января 2011

Вариант ответа Карлсена, который я всегда использую.

У меня есть каталог /config или /etc в проекте. Этот каталог часто содержит примеры конфигов, таких как:

  • dev.yaml
  • ci_server.yaml

Затем мои приложения извлекают из /etc/app.yaml символическую ссылку на правильный конфиг в зависимости от хоста, на котором он запущен.

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

1 голос
/ 03 января 2011

Один из вариантов - создать специальный файл hgignore для сервера развертывания, который может или не может быть включен в хранилище. Затем в файле hgrc сервера укажите путь к специальному файлу hgignore с переменной ignore.

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

1 голос
/ 21 декабря 2010

Это что-то, что можно решить вне контроля версий?Например, включите файл во все копии репозитория, но включите или отключите его использование с переменными среды или чем-то подобным.Это не похоже на то, что большинство систем контроля версий создано для обработки, если только вы не используете мерзкие хаки для таких вещей, как добавление / удаление / исправление файлов после обновления.

...