2010-08-12 77 views

回答

5

默認情況下,hg push將推送本地存儲庫中不在遠程存儲庫中的所有變更集。如果你在本地分支上有一些變化(即你的案例中有Environment_Switching) - 即使是一個關閉的分支 - 他們也會去,除非你明確地使用hg push -b default排除它們(假設你沒有合併該分支到default) 。

要回答你的問題,這只是一個警告,你正在創建一個新的遠程分支。

編輯:hg push -r defaulthg push -b default是等同的。從輸出爲hg help revs

Mercurial支持多種方式來指定單個修訂。 ... 爲簡潔起見刪除了文本 ...分支名稱表示該分支的最終版本。

推動分支的最終版本也會推動它的祖先,這是分支上其餘的變更集。

+0

你的解釋確實說明了信息告訴我的是什麼。但是,我確實嘗試了「hg push -b default」,並且我仍然收到了我要推送新分支的消息。 我沒有嘗試@ Ry4an的「hg push -r default」的建議,但我猜測它們是相同的。 – 2010-08-13 12:07:27

+0

聽起來你已經將'Environment_Switching'分支合併回默認了。在這種情況下,您要麼必須(a)將該分支推送到遠程存儲庫(使用' - new-branch'選項來'hg push'),或者(b)使用'hg克隆「,」hg export「和」hg import「創建一個沒有改變的本地存儲庫,然後從那裏推入,或者(c)在推送之前用移植擴展做一些欺騙手段將更改移動到默認值。 – 2010-08-13 13:35:02

0

編輯:誤解了這個問題。以下是您如何在一個分支中獲得多個主管。


一般來說,如果你有比遠程不同的基礎創建一個新的頭。
我已經看到了這個在下面的工作流程:
R1用戶A提交和推
R1用戶B拉動
R2用戶A提交和推
R'用戶B提交併推送

Mercurial將決定用戶B的推送是基於R1,而服務器是在R2上的,因此它將只接受不同分支上用戶B的更改。
爲了防止發生這種情況,請在本地提交用戶B的更改,然後執行hg pull,然後執行hg merge並將您的更改與遠程更改合併。 比您可以將您的更改推送到遠程服務器。

+1

你描述的是一個分支上的不同頭部。 – Rudi 2010-08-13 08:25:06

0

是的,即使您關閉的分支也會在您執行hg push時被推送。如果你想推動默認,你可以做一個hg push -r default,那麼你不會看到這條消息。