Сохранение разных версий файла hg с управлением версиями на разных компьютерах? - PullRequest
0 голосов
/ 05 декабря 2010

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

Ответы [ 2 ]

3 голосов
/ 06 декабря 2010

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

Тем не менее, может иметь смысл иметь машинные данные в файлах с контролем версий (лично я делаю это длямои dot-rc файлы и сценарии оболочки).В этом случае я бы предложил разделить общие и определенные конфигурации на разные файлы и включить / использовать конкретную одну во время сборки или выполнения, в зависимости от текущегоподержанная машина.

Если невозможно автоматически определить текущую машину, вы все равно можете создать неверсированную символическую ссылку на каждом компьютере, указывающую на соответствующий специфический файл конфигурации.Например, на компьютере foo формат файла может выглядеть следующим образом:

  • generic.conf с управлением версиями
  • specific-foo.conf с контролем версий
  • specific-bar.conf с управлением версиями
  • specific.confspecific-foo.conf неверсированная символьная ссылка

Альтернативой символическим ссылкам является использование ловушки , которая автоматически создает specific.conf, например, при каждом вызове hg update.Поскольку ловушки устанавливаются в файле репозитория hgrc , его можно определить индивидуально для каждой машины.Вот пример соответствующей секции hooks в файле .hg/hgrc клона репозитория на компьютере foo :

[hooks]
update = cp specific-foo.conf specific.conf
0 голосов
/ 05 декабря 2010

Параметры конфигурации, относящиеся к конкретной машине, не должны контролироваться по версии в том же хранилище, что и код проекта.

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

...