2010-10-01 18 views
0

已經在commit_hooks.py文件中寫入了兩個函數,我希望在任何提交持久化之前運行它,但我無法弄清楚如何編寫我的hgrc來檢測它們。如何編寫我的hgrc以便Mercurial檢測到我的鉤子?

功能標題有:

def precommit_bad_merge(ui, repo, parent1=None, parent2=None, **kwargs): 
... 

def precommit_bad_branching(ui, repo, **kwargs): 
... 

我已經使用這個「guide」試過,但文檔是太「男人pagey」對我來說。以下是無效的棄兒。

[hooks] 
precommit = ..\..\mno2\commit_hooks.py 

更新! 重寫勾線:

precommit = D:\environments\next\mno2\commit_hooks.py 

使水銀檢測預提交掛鉤,但它總是與狀態1由於某種原因退出。

+0

-1失敗的第一點[如何問](http://stackoverflow.com/questions/ask-advice)。 – 2010-10-04 19:04:23

+0

除了Linux手冊頁外,有關Mercurial鉤子的文檔至少沒有說明。事後看來,我應該能夠通過閱讀指南自己弄清楚,但缺乏例子讓我感到困惑。 – MdaG 2010-10-07 12:55:02

回答

2

設置您[hooks]部分是這樣的:

[hooks] 
precommit.foo = python:D:\environments\next\mno2\commit_hooks.py:precommit_bad_merge 
precommit.bar = python:D:\environments\next\mno2\commit_hooks.py:precommit_bad_branching 

爲您所使用的precommit行的語法是外部掛鉤,所以這是處理你的Python文件作爲一個獨立的腳本(我假設它不是因爲你正在使用函數簽名來處理進程內鉤子)。

你可能需要在你的路徑中有我的python可執行文件。

欲瞭解更多信息,請參閱權威指南關於in-process hooks;評論中隱藏了一些有用的信息。

+0

謝謝你的工作很棒! :-)雖然MercurialEclipse插件(我只是拒絕訪問),但它在Eclipse中不起作用,但這是另一個問題,可能是由於Eclipse工作區在我的本地計算機上,並且源代碼位於遠程服務器上。 – MdaG 2010-10-04 07:57:51

0

「人pagey」 文檔有有關python鉤語法部分:

用於Python鉤的語法 如下:

hookname = python:modulename.submodule.callable 
hookname = python:/path/to/python/module.py:callable 

的Python鉤的 水銀進程中運行。每個鉤子被稱爲 至少有三個關鍵字參數: 一個ui對象(關鍵字ui),一個存儲庫 對象(關鍵字repo)和一個鉤子類型 關鍵字,告知使用什麼樣的鉤子 。上面列出的 環境變量的參數作爲關鍵字參數傳遞 ,前綴無HG_ ,名稱爲小寫。

如果Python鉤子返回「true」 值或引發異常,則將 視爲失敗。

相關問題