2009-12-08 6 views
11

Me gustaría tener dos archivos ~/.hgrc: ~/.hgrc y ~/.hgrc.local - uno con ajustes "estándar" (por ejemplo, username), el otro con ajustes específicos de la máquina (por ejemplo, configuración una herramienta de combinación gráfica).Carga múltiples archivos .hgrc, es decir, algunos con configuraciones específicas de la máquina.

¿Cómo puedo hacer esto con hg?

Por ejemplo, así es como lo hago con Vim:

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

continuación:

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

Respuesta

20

Hay un no-uso frecuente %include Directiva en mercurial 1.3 y posteriores:

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

así que ve con:

%include ~/.hgrc.local 

y usted debe ser bueno para ir .

+0

asombro, increíble, eso es exactamente lo que estaba buscando. Gracias. –

+0

Guau, no tenía idea de que existiera. Bonito. –

+0

Hrm, entonces eso sería genial ... Pero no funciona con hg 1.3.1 o 1.4.1 ... Y no es posible cambiar el árbol de fuentes de hg (1.4.1 + 7-4ddfad7ebd98) por '% import' todo arriba. Entonces ... ¿Dónde encontraste eso? –

0

Mercurial se verá en varios lugares diferentes para hgrc archivos y los cargará si está presente. Para la configuración de todo el sistema, el estándar (en UNIX) sería usar /etc/mercurial/hgrc.

Consulte el files section of the hgrc man page para obtener más información.

+0

Se ve en algunos lugares diferentes ... Pero necesito tener ambos archivos de configuración en ~, porque no tengo root en todas mis máquinas. –

+0

downvoted para parafrasear el manual sin agregar información real. Puedes hacerlo mejor :) – NicDumZ

5

Resuelvo este problema para todos mis "archivos de puntos" de forma similar. Al iniciar sesión, mi shell comprueba una lista de archivos (hgrc, vimrc, ....) y comprueba si alguno de ellos es anterior a ${that_name}.global o ${that_name}.local. Si es - cat ${that_name}.{global,local} > ${that_name}. Simple y funciona muy bien hasta ahora. Si bien hay una forma "mejor" (usando %include), algunas veces el procesamiento manual de los archivos de configuración tiene sus ventajas, por ejemplo, funcionará con mercurial pre-1.3.

+0

Ah, es una gran idea. ¡Gracias! –

4

Mercurial comprueba una serie de archivos de configuración con una prioridad específica. De esta forma, puede tener configuraciones globales, específicas del usuario y específicas del repositorio. versión Mercurial> = 1.4 tiene un comando hg help config que describe esto de una buena visión de conjunto:

$ 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]> 
     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 

usted puede enumerar su configuración actual con hg showconfig.

+0

Desafortunadamente lo he visto ... Y no responde la pregunta. –

+1

De acuerdo en que la respuesta no responde al 100% a su pregunta. ¿Pero un voto abajo? Venga. – Paidhi

+0

me ayuda. ¡Te votaré! – user37078

Cuestiones relacionadas