2012-03-05 8 views
6

Sé cómo especificar qué ganchos se ejecutan cuando. Lo que quiero saber es si es posible pasar la configuración al gancho a través del archivo hgrc. Las extensiones pueden hacer esto, p.¿Puedo configurar ganchos mercuriales como algunas extensiones configuradas en el archivo hgrc?

[extensions] 
someextension = something 

[someextension] 
some.config = 1 
some.other.config = True 

Quiero ser capaz de hacer algo similar para los anzuelos, p.

[hooks] 
changegroup.mail_someone = python:something 

[changegroup.mail_someone] 
to_address = [email protected] 

¿Es esto posible? La búsqueda de una forma de hacer esto no ha resultado útil ... Si es posible, ¿cómo hago para leer en la configuración en mi manejador de ganchos (Python en proceso)?

Respuesta

6

Permítanme responder a ambos tipos de anzuelos:

  • Un gancho interno usaría ui.config and the related methods para leer los valores de configuración:

    address = ui.config('changegroup.mail_someone', 'to_address') 
    

    También puede utilizar ui.configbool y ui.configlist a lee booleanos y listas, respectivamente.

  • Un gancho externo puede utilizar hg showconfig para extraer el valor de configuración:

    $ hg showconfig changegroup.mail_someone.to_address 
    

    que devolverá [email protected] en stdout. Puede usar

    $ hg showconfig changegroup.mail_someone 
    

    para ver todas las configuraciones en esa sección en particular.

+0

Gracias. Eso es práctico. Presumiblemente, puede acceder a esto casi de la misma manera con un enlace interno haciendo 'os.popen ('hg showconfig mail_someone.to_address')' – Spycho

+0

@Spycho: seguro, puedes hacer eso. Pero para un gancho interno ya tienes un objeto 'ui' y entonces puedes llamar' ui.config ('mail_someone', 'to_address') 'directamente. –

+0

ah, increíble. Eso es más simple. Pensé que leí en alguna parte que los métodos mercuriales internos a los que se puede acceder a través de los parámetros de ui y repo no deberían usarse porque se pueden interrumpir sin previo aviso. ¿No es eso lo que trata http://mercurial.selenic.com/wiki/MercurialApi? ¿O esto no se considera parte de la "API interna de Mercurial"? – Spycho

Cuestiones relacionadas