2011-09-21 85 views
3

使用正則表達式集驗證提交消息所需的所有步驟是什麼? 我們希望在半集中式設置中工作,所以我需要針對開發人員克隆(local repository)和我們的中心克隆(global repository)的解決方案。我讀了約Mercurial Hooks,但我有點失落如何把所有的東西放在一起。如何在Mercurial中驗證並執行提交消息?

對於local repository我需要一種方法向我的開發人員分發驗證腳本。我知道在克隆時鉤子不會傳播,所以我需要在每個新鮮克隆中「啓用」它們。這將作爲我們的PrepareEnvironement.bat腳本的一部分完成,我們在每個乾淨的克隆上運行。

爲了安全起見,我需要在我的global repository上進行類似的驗證。應該不可能推入global repository未驗證的提交。我可以手動配置它 - 這是一次性工作。

我在Windows上,因此不應要求安裝除TortoiseHG之外的任何內容。這已經是部署Mercurial的戰鬥。任何其他依賴不受歡迎。

+0

我剛剛發現http://stackoverflow.com/questions/2451560/how-do-you-access-the-commit-message-in-a-mercurial-in-process-hook和https:// bitbucket。組織/ DLS /提交-MSG-檢查掛機/ SRC/ebaacb377171/commit-msg-check-hook.py。它看起來像一個開始... –

+0

你想執行什麼樣的驗證?答案真的取決於這個......你是什麼意思的「本地」或「全球」存儲庫?在Mercurial中沒有這樣的事情,我想你必須描述你的特定設置。順便說一句,你可以在Windows上安裝幾乎所有的UNIX工具... – krtek

回答

2

您可以使用Spellcheck示例作爲起點。在每個開發人員的配置,你需要使用下面的掛鉤:

pretxnchangegroup - 一組變更集已納入從另一個倉庫本地之後運行,但在此之前它成爲永久性的。

pretxncommit - 在本地創建新變更集後,但在變爲永久變更之前運行。

對於集中回購,我認爲你只需要pretxnchangegroup掛鉤,除非在服務器上也可以發生提交。但是,如果遠程回購是拒絕一個或多個正在推送的變更集的用戶,那麼您將需要每個開發人員的Histedit擴展名。這個擴展允許他們「編輯」已經提交的變更集。我認爲在大多數情況下,本地鉤子會解決問題,但正如你所說,「以防萬一」。

更多details about handling events with hooks可以在Hg Book中找到。

相關問題