2011-04-08 43 views
4

我們有兩個存儲庫:myappmyapp-1.1。我們將myapp-1.1合併到myapp中。Mercurial - 確定是否需要從遠程回購合併

要查看是否有1.1需要合併我做到這一點的變化:

cd c:\myapp  (local clone) 
hg fetch  (fetch from remote myapp repo) 
hg in ssh://hg/myapp-1.1 (see what needs to be merged in from remote 1.1 repo) 

此工程 - 但有沒有更好的辦法?有沒有辦法做到這一點,而不需要本地myapp克隆?

回答

5

水銀不能做與除力推或拉的一些變種遠程倉庫從他們。

因此,任何你想問Mercurial做的事都必須用本地克隆來完成。

因此不,Mercurial無法檢查是否需要合併兩個遠程存儲庫。

+0

謝謝,是的,你理解正確。 – 2011-04-08 21:17:37

1

本地克隆有什麼問題?

如果要隔離機在回購位於所有操作,你可以做到以下幾點:

$ ssh $hg_box 
$ cd myapp; hg in /myapp-1.1 
+0

本地克隆沒有錯,只是想避免它。我無法訪問存在遠程存儲庫的框。所以我必須有一個本地克隆,在我能夠看到是否需要合併(根據我的問題)之前,我需要'hg fetch'。這將是很好,不必這樣做... – 2011-04-08 21:19:03

1

這可能看起來很明顯,但由於Mercurial是一個完全分佈式的源代碼管理系統,每個回購站都是獨立的,是否有可能實際轉到myapp並直接從myapp- 1.1?我知道大多數開發團隊都會保留某種集中式存儲庫,但這並不排除直接從您擁有「中央」存儲庫的框中使用Mercurial。這一切仍然是本地和遠程存儲庫。

這假設你想完全合併myapp和myapp1.1。否則,通過定義您正在做的事情,您必須將myapp克隆到另一個完整存儲庫,然後將其與myapp-1.1合併。

+0

好的建議,但沒有我無法訪問遠程回購框。 – 2011-04-08 22:33:57

0

假設既不遠程回購,也不是當地的回購協議允許每個分支多頭,這個命令應該告訴我們,如果本地回購具有遠程回購的頭在給定的分支:

hg log -r $(hg in -b branch_name -n -l1 -q --template "{node}\n") 

如果本地倉庫沒有按沒有該變更集,但在「branch_name」中有外出變更集,那麼通常它應該是需要合併的指標。