2012-03-05 45 views
6

我知道如何指定在什么时候运行哪个钩子。我想知道的是,如果可以通过hgrc文件将配置传递给挂钩。扩展可以做到这一点,例如我可以像配置hgrc文件中的某些扩展一样配置mercurial钩子吗?

[extensions] 
someextension = something 

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

我希望能够为钩子做类似的事情,例如,

[hooks] 
changegroup.mail_someone = python:something 

[changegroup.mail_someone] 
to_address = [email protected] 

是这样的可能吗?寻找一种方法来做到这一点还没有发现任何有用的东西......如果可能的话,我该如何在我的(Python进程内)钩子处理程序中的配置中读取数据?

回答

6

我先回答两个钩类型:

  • 进程挂钩将使用ui.config and the related methods读取配置值:

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

    您还可以使用ui.configboolui.configlist到分别阅读布尔和列表。

  • 一种外部钩可以使用hg showconfig提取配置值:

    $ hg showconfig changegroup.mail_someone.to_address 
    

    这将在stdout返回[email protected]。您可以使用

    $ hg showconfig changegroup.mail_someone 
    

    查看该特定部分中的所有设置。

+0

谢谢。这很方便。据推测,你可以通过执行'os.popen('hg showconfig mail_someone.to_address')''以几乎相同的方式访问这个内部钩子? – Spycho 2012-03-06 10:32:38

+0

@Spycho:当然,你可以做到这一点。但是对于一个内部钩子,你已经有一个'ui'对象,所以你可以直接调用'ui.config('mail_someone','to_address')'。 – 2012-03-06 10:43:24

+0

啊,真棒。这很简单。我以为我在某处读到,通过ui和repo参数可以获得的内部mercurial方法不应该被使用,因为它们可以在没有通知的情况下中断?这不是什么http://mercurial.selenic.com/wiki/MercurialApi是关于什么?或者这不被认为是“Mercurial的内部API”的一部分? – Spycho 2012-03-06 10:50:58

相关问题