Кроссплатформенное решение hgrc? - PullRequest
3 голосов
/ 10 июня 2011

Я ищу решение, чтобы иметь один .hgrc для mercurial для работы во всех моих рабочих средах (win / lin / mac), точно так же, как один vimrc для управления всеми.

Это касаетсяпроблема, когда мне нужно указать путь для некоторых расширений, например, hg-git:

в windows:

[extensions]
hggit = E:\hg-git\hggit

в linux / mac:

[extensions]
hggit = ~/hg-git/hggit

Для vimrc у нас есть решение, позволяющее различать различные платформы, например

if has('win32')
  ...
endif

Зная, что hgrc mercurial - это просто обычный ini-файл, мне интересно, существует ли подобное решение для hgrc-файла.

Или, может быть, какое-то другое решение?

Обновление

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

Однако заставить работать расширения - это только одна цель.Я полагаю, что поведение других конфигураций зависит от платформы, например, для http://www.ogre3d.org/docs/OGREDeveloperGuide/index.html, необходимы специальные опции для Windows и Mac.Как решить эту проблему?

Ответы [ 3 ]

4 голосов
/ 11 июня 2011

Как насчет использования механизма включения .hgrc и трех отдельных файлов:

~/.hgrc
~/.hgrc-windows
~/.hgrc-linux

где основной ~ / .hgrc имеет:

%include .hgrc-$OS

, а затем установите $OS в своем профиле Windows и вашем профиле Linux. С другой стороны, вы, вероятно, могли бы найти переменную env, которая уже существует в обеих системах ($ USERNAME обычно уже установлена ​​в обоих окнах и unix и может отличаться для вас).

3 голосов
/ 10 июня 2011

Это на тот случай, если вы не найдете способа иметь только один .hgrc (или один набор .hgrc* файлов, согласно комментарию Обена Сонна).

Я сталкиваюсь только со средами Windows,поэтому мои mercurial.ini файлы одинаковы за исключением 1 пути.Я храню копию в системе контроля версий вместе со своим скриптом профиля Powershell.

Однако, если бы я столкнулся с более разнообразными средами, я бы абстрагировал конфигурацию от скрипта на кроссплатформенном языке (например, Python)который перезаписывает цель .hgrc или mercurial.ini.Я мог бы иметь части, которые должны быть разными для каждой ОС / машины, рядом друг с другом, с простыми способами определить, какая среда является текущей.Тогда я бы оставил этот сценарий в системе контроля версий, чтобы сохранить одинаковую версию на каждом компьютере.

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

(Черт возьми, я все равно испытываю желание подстроить такую ​​установку.)

1 голос
/ 10 июня 2011

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

...