Загружать несколько файлов .hgrc - то есть некоторые с настройками для конкретного компьютера?

Я хотел бы сохранить два файла ~/.hgrc: ~/.hgrc и ~/.hgrc.local - один со стандартными настройками (например, username), а другой с настройками для конкретного компьютера ( например, установка графического инструмента слияния).

Как это сделать с помощью hg?

Например, так я делаю это с Vim:

# ~/.vimrc
syntax enable
source ~/.vimrc.local

Тогда:

# ~/.vimrc.local
let work_code = 'code/work/.*'
if expand('%:p:h') =~ work_code ... fi

Ответ 1

Там не часто используется директива %include в mercurial 1.3 и новее:

От man hgrc:

   A  line  of  the  form %include file will include file into the current
   configuration file.  The  inclusion  is  recursive,  which  means  that
   included  files  can include other files. Filenames are relative to the
   configuration file in which the %include directive is found.

так что:

   %include ~/.hgrc.local

и вам должно быть хорошо идти.

Ответ 2

Я решаю эту проблему для всех своих "точечных файлов" аналогичным образом. При входе моя оболочка проверяет список файлов (hgrc, vimrc,....) и проверяет, является ли кто-то из них старше ${that_name}.global или ${that_name}.local. Если это - cat ${that_name}.{global,local} > ${that_name}. Простой и отлично работает до сих пор. Хотя "лучший" способ (с использованием %include) иногда обрабатывает файлы конфигурации вручную, имеет преимущества - например, он будет работать с меркуриальным пре-1.3.

Ответ 3

Mercurial проверяет наличие нескольких файлов конфигурации с определенным приоритетом. Таким образом, вы можете иметь глобальные, специфичные для пользователя и определенные для репозитория настройки. Mercurial version >= 1.4 имеет команду hg help config, которая описывает это в хорошем обзоре:

$ hg help config
Configuration Files

    Mercurial reads configuration data from several files, if they exist. Below we list the most specific file first.

    On Windows, these configuration files are read:

    - "<repo>\.hg\hgrc"
    - "%USERPROFILE%\.hgrc"
    - "%USERPROFILE%\Mercurial.ini"
    - "%HOME%\.hgrc"
    - "%HOME%\Mercurial.ini"
    - "C:\Mercurial\Mercurial.ini"
    - "HKEY_LOCAL_MACHINE\SOFTWARE\Mercurial"
    - "<install-dir>\Mercurial.ini"

    On Unix, these files are read:

    - "<repo>/.hg/hgrc"
    - "$HOME/.hgrc"
    - "/etc/mercurial/hgrc"
    - "/etc/mercurial/hgrc.d/*.rc"
    - "<install-root>/etc/mercurial/hgrc"
    - "<install-root>/etc/mercurial/hgrc.d/*.rc"

    The configuration files for Mercurial use a simple ini-file format. A configuration file consists of sections, led by a "[section]" header and followed by
    "name = value" entries:

      [ui]
      username = Firstname Lastname <[email protected]t>
      verbose = True

    This above entries will be referred to as "ui.username" and "ui.verbose", respectively. Please see the hgrc man page for a full description of the possible
    configuration values:

    - on Unix-like systems: "man hgrc"
    - online: http://www.selenic.com/mercurial/hgrc.5.html

Вы можете указать текущие настройки с помощью hg showconfig.

Ответ 4

Mercurial будет выглядеть в нескольких разных местах для файлов hgrc и будет загружать их, если они есть. Для системной конфигурации стандартом (в UNIX) было бы использовать /etc/mercurial/hgrc.

Дополнительную информацию см. в разделе файла на странице hgrc.