2012-03-05 17 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

相關問題