2011-01-11 12 views
13

Estoy buscando una forma de configurar .hgrc elementos de configuración sin editar realmente el archivo de texto. Estoy tratando de estandarizar la configuración de la hgrc a través de múltiples desarrolladores y me gustaría un comando como¿Puedo configurar las opciones de configuración de Mercurial programáticamente?

hg --config ui.username=foo 

sino que también ahorra que el cambio de configuración en el archivo hgrc.

Parece que esto debería ser algo que debería ser soportado directamente en el comando vail hg, pero no puedo encontrarlo en ninguna parte.

Respuesta

9

Alguien - usted o Mercurial - tendrá que editar el archivo de configuración si desea que el cambio de configuración que se guarda :-)

Y si se puede llamar Mercurial con

hg --config ui.username=foo 

entonces también debería ser capaz de hacer

echo '[ui]' >> ~/.hgrc 
echo 'username = foo' >> ~/.hgrc 

que guardar el cambio de configuración, no importa cómo el archivo ~/.hgrc pasa a ser similar (que está bien tener múltiples secciones [ui]).

Mercurial 3.0 y posterior tiene the hg config --edit command que abre un editor con el archivo de configuración de usuario. Todavía no es exactamente lo que estás pidiendo, pero al menos esto hace que sea más fácil editar el archivo de forma interactiva.

+3

Y si el proceso bajo el cual hg se ejecuta no tiene '~' o directorio HOME, o se está ejecutando como un usuario de sistema/daemon con un directorio '~' no puede escribir a:: ~ ( – Garen

+1

@Garen: Siempre puede configurar 'HGRCPATH' para anular donde Mercurial busca los archivos de configuración.Eso debería ser útil para su usuario daemon sin hogar –

+2

Ciertos sistemas populares de CI (por ejemplo, TeamCity) no ofrecen ninguna manera de hacer esto. La documentación también es incorrecta. -por ejemplo, hg no comprueba las ubicaciones documentadas de todo el sistema, como C: \ Mercurial, y nunca he podido leer la ubicación de registro anunciada. En Linux puede ser difícil cuando tu compilación ocurre dentro de un chroot donde podría tener una capacidad limitada para efectuar configuraciones de entorno, no tener homedir, etc. Podría seguir y seguir, el punto es que sería TAN fácil de sortear con ellos IFF Mercurial simplemente nos dejaría especificar un archivo de configuración camino en la línea de comando. :) – Garen

2

Esta forma:

hg --config ui.username=foo 

no guarda nada. Establece el valor de solo una ejecución.

También puede usar /etc/mercurial/hgrc para configuraciones de todo el sistema si eso ayuda.

1

Hay una extensión que ayuda con esto, https://bitbucket.org/alu/hgconfig/wiki/Home

Después installing that hgext, se pueden hacer cosas como esta.

% hg showconfig paths 
paths.default=ssh://[email protected]/alu/hgconfig 
% hg config paths.upstream $(hg showconfig paths.default) 
% hg config paths.default $(hg showconfig paths.default | sed 's|/alu/|/nassrat/|') 
% hg showconfig paths 
paths.default=ssh://[email protected]/nassrat/hgconfig 
paths.upstream=ssh://[email protected]/alu/hgconfig 

El gotcha es esto anula la orden interna de configuración, puede modificar el código para cambiar el nombre del comando, o vivir con ella. Afortunadamente, probablemente no importaría si tu caso de uso es simplemente establecer y obtener configuraciones específicas.

Cuestiones relacionadas