2011-05-25 54 views
0

我正在使用具有穩定和實驗分支的存儲庫。有時我在尚未準備好穩定分支的實驗分支上添加一個文件。當我合併時,我想合併兩個分支公用的文件中的更改,但忽略其中一個分支上不存在的文件。在Mercurial中合併時忽略不存在的文件

這裏有一個簡單的例子:

hg init 
hg branch stable 
(create file A) 
hg add A 
hg commit -m "Added A" 

hg branch exp 
(create file B) 
hg add B 
hg commit -m "Added B, which is really experimental" 

(modify file A) 
hg commit -m "Some changes to A" 

hg update stable 
hg merge exp 

但是我改變合併工具配置,水銀似乎總是飲用B與合併一起。由於它在穩定分支上不存在,所以它永遠不會發生衝突。

我能做到以下幾點:

hg update stable 
hg merge exp 
hg commit -m "Merged" 
hg revert -r 0 B 

但要求我知道哪些文件需要恢復。

任何想法使合併忽略不存在於一個分支上的文件,最好自動執行它?

+0

Mercurial正在按照您的要求進行操作。你告訴它在'exp'分支上進行修改並將它們合併到'stable'分支中。這包括新文件。您是否試圖將'stable'中的更改合併到'exp'中? – 2011-05-25 19:33:26

+2

也許你應該考慮一下你的分支概念,並使用第三個分支來進行*真正的實驗*更改。 – 2011-05-25 19:39:35

回答

1

你不能要求Mercurial做你想做的。

您不合並單個文件,您合併整個分支,這意味着分支的一部分的所有文件成爲合併的一部分。這就是Mercurial的設計方式和操作方式。

現在,你可能恢復/忘記/刪除你不想要的文件,然後你提交之前,你只是爲自己的災難。

我建議你將你想要保留的東西與你不知道的東西分開,如果你想保留,那麼你可以合併一個分支並讓其他分開。