2012-04-16 78 views
7

我在某些情況下需要強制Mercurial用戶在允許任何hg commit之前運行hg pull -u,即hg pull將意味着傳入隊列是空 - 而且我還希望這個人使用分支的頭版。Mercurial:在「hg commit」之前強制執行「hg pull -u」

我該如何設置這樣的限制?

(我深知,這違背了DVCS設計的核心部分)

+0

要求的另一種方式,這是如何實現的服務器觸發器來禁止,​​創造多頭推。 – 2012-04-16 14:02:11

+0

我不能告訴你如何自動化,但我使用「hg incoming」來檢查是否需要拉動。你可能想要使用它。 – 2012-04-16 14:02:37

+4

如果你解釋了你正試圖解決的問題,而不是你想解決的破解解決方案,那會更好。 – 2012-04-16 14:34:30

回答

3

你可以問你的開發人員安裝

[hooks] 
pre-commit = hg pull -u 
在他們的配置文件

(它可能應該因爲這種安裝在每個倉庫.hg/hgrc文件工作流是特定於存儲庫的)

這使得Mercurial有點像Subversion一樣:你的開發者只會有一個突出的變更集。但是請注意,只要有人推送到服務器,hg pull -u無法更新到新的分支提示,因爲它將跨越分支(拓撲分支)來執行此操作。所以在這一點上需要適當的合併(或者rebase,見hg pull --rebase)。

1

正如亞當所說,也許你真正需要做的是防止多個頭(每個分支)。這是我們所做的,使用Netbeans的'forbid_2head'鉤子(從這裏鏈接https://www.mercurial-scm.org/wiki/TipsAndTricks#Prevent_a_push_that_would_create_multiple_heads

結果是鉤子阻止任何在分支上創建多個頭的推送(所以匿名/默認分支上的一個加每個在命名分支上)。這有效地在提交之前強制拉動,因爲你必須拉動,在本地獲得兩個頭,然後合併或重新綁定以將其移除。

注,鉤是在服務器/主回購

相關問題