Load multiple .hgrc files - ie, some with machine-specific settings?

前端 未结 4 1453
北恋
北恋 2021-01-11 15:42

I\'d like to keep two ~/.hgrc files: ~/.hgrc and ~/.hgrc.local – one with \"standard\" settings (eg, username), the other with machine-specific settings (eg, se

相关标签:
4条回答
  • 2021-01-11 16:33

    Mercurial checks for a number of configuration files with a specific priority. This way you can have global, user-specific and repository-specific settings. Mercurial version >= 1.4 has a hg help config command which describes this in a nice overview:

    $ 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 <firstname.lastname@example.net>
          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
    

    You can list your current settings with hg showconfig.

    0 讨论(0)
  • 2021-01-11 16:37

    There's a not-often used %include directive in mercurial 1.3 and later:

    From 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.
    

    so go with:

       %include ~/.hgrc.local
    

    and you should be good to go.

    0 讨论(0)
  • 2021-01-11 16:37

    Mercurial will look in several different locations for hgrc files and will load them if present. For system-wide configuration the standard (on UNIX) would be to use /etc/mercurial/hgrc.

    See the files section of the hgrc man page for more information.

    0 讨论(0)
  • 2021-01-11 16:44

    I solve this problem for all my "dot files" in a similar way. On login my shell checks a list of files (hgrc, vimrc, ....) and checks if any of them is older than ${that_name}.global or ${that_name}.local. If it is - cat ${that_name}.{global,local} > ${that_name}. Simple and works great so far. While there's a "better" way (using %include) sometimes processing the config files manually has advantages - for example it will work with mercurial pre-1.3.

    0 讨论(0)
提交回复
热议问题