2011-05-26 81 views
8

在本地回購更改後,我承諾使用hg commit -m <message>,然後我推送到我的服務器hg push,然後在我的服務器中更新工作目錄hg update如何使用Mercurial快速啓動

有沒有更好的方法來做到這一點?

回答

8

你所描述的前兩個步驟:

hg commit -m <message> 
hg push 

需要按,承諾要完全分開從水銀(以及大多數其他DVCS以及)服務器的事實。你可以編寫一個post-commit鉤子來執行每次提交後的推送,但不建議這樣做,因爲它會阻止你在提交期間和推送前糾正簡單的錯誤。

因爲你正試圖在'服務器'上執行更新,我假設你正在服務器上的版本庫中執行代碼版本。我假設這是因爲通常服務器只是作爲一個主存儲庫供您和您的開發人員訪問(並且還需要備份等),並且不需要明確的hg update

假設你在服務器上執行代碼,你可以嘗試更換推送和更新使用此命令:

hg pull <path to development repo> -u

這將從本地回購進行拉,然後自動更新。根據您的服務器配置,可能很難找到本地倉庫的路徑。

2

有一個叫autosync你可能會發現有用的擴展:

這個擴展提供了自動同步命令,自動連續提交工作副本的變化,取(拉,合併,提交)從另一個版本庫的修改和推本地更改回其他存儲庫。將配置文件或待辦事項清單作爲要同步的示例。在更高級別上,autosync命令不僅可以同步存儲庫,還可以同步工作副本。必須使用中央存儲庫(通常沒有工作副本)作爲同步集線器:

6

對於問題的第一部分(即在您執行提交時自動推送),您可以使用此處描述的技巧回答:mercurial automatic push on every commit

如果要自動更新工作目錄,可以使用掛鉤來完成。在你的倉庫(.hg/hgrc您的服務器目錄)的hgrc補充一點:

[hooks] 
changegroup = hg update >&2 

這將每一個推入到這個服務器進行一次自動更新的工作目錄。該掛鉤在Mercurial FAQ中描述。

如果您使用這兩個解決方案,那麼下次您執行hg commit -m "message"時,提交將自動推送到遠程服務器,並且服務器上的工作目錄將被更新。

+0

非常感謝你,你剛剛度過了我的一天! Mercurial比git和svn容易得多,它只是做我想做的事情,沒有別的,沒有別的。 – elslooo 2011-07-19 17:53:36