2012-02-04 76 views
2

在SVN中,如果您的本地修訂與主存儲庫不同步,則無法提交。 Mercurial不檢查這個並允許你提交。然後你必須做一個合併。爲什麼Mercurial在提交前檢查最新版本?

如果有很多程序員在工作,那麼這可能會導致一個大問題。有沒有辦法解決這個問題?

+2

你提到的「大問題」與Subversion沒有什麼不同,而不是Mercurial。在一個系統中,當你svn更新時隱式地進行合併,而在另一個系統中,你可以在hg pull之後用'hg merge'明確地進行合併。 – 2012-02-04 11:47:15

回答

6

Mercurial和SVN有兩種截然不同的工作方式。

SVN是集中式的,您提交的所有內容都將立即被所有其他人訪問。這就是爲什麼你必須始終致力於每一個其他變化。因此,您可以確定您所做的工作仍然適用於其他人所做的修改。

使用Mercurial,提交是本地到您的工作目錄。只有push分發給其他人。這就是爲什麼沒有檢查每一個提交的原因。 (通過這種方式,您也可以脫機工作,即不需要連接到存儲庫)。

只有當您嘗試push您的更改時,Mercurial會檢查您正在使用的分支上是否存在新的提交。如果是這樣,你可以強制推送(這將創建一個新的頭)或合併其他修改,從而承認他人的工作。

每個DVCS(D用於分佈式)我知道關於處理commit/push的方法相同,這是它們的許多優點之一。只要合併完成,您就不會因爲這個問題而出現問題。

如果你真的想檢查每個提交的新變更集,我認爲可以用一些鉤子來實現,但我真的沒有看到原因。也許有人會提出這樣的事情。