В принципе, Вим прав: конфигурации, специфичные для машины, не должны быть частью системы контроля версий проекта.Пока вы идете в одиночестве, это не является реальной проблемой, но как только вы захотите предоставить универсальные релизы вашего проекта, вам придется избавиться от них.В этом случае вы можете не обрадоваться тому факту, что история изменений содержит файлы с машинными данными.
Тем не менее, может иметь смысл иметь машинные данные в файлах с контролем версий (лично я делаю это длямои dot-rc файлы и сценарии оболочки).В этом случае я бы предложил разделить общие и определенные конфигурации на разные файлы и включить / использовать конкретную одну во время сборки или выполнения, в зависимости от текущегоподержанная машина.
Если невозможно автоматически определить текущую машину, вы все равно можете создать неверсированную символическую ссылку на каждом компьютере, указывающую на соответствующий специфический файл конфигурации.Например, на компьютере foo формат файла может выглядеть следующим образом:
generic.conf
с управлением версиями specific-foo.conf
с контролем версий specific-bar.conf
с управлением версиями specific.conf
→ specific-foo.conf
неверсированная символьная ссылка
Альтернативой символическим ссылкам является использование ловушки , которая автоматически создает specific.conf
, например, при каждом вызове hg update
.Поскольку ловушки устанавливаются в файле репозитория hgrc , его можно определить индивидуально для каждой машины.Вот пример соответствующей секции hooks в файле .hg/hgrc
клона репозитория на компьютере foo :
[hooks]
update = cp specific-foo.conf specific.conf