2012-06-04 74 views
2

我使用Mercurial和TortoiseHg。我有兩個分支(AB)與兩個文件(toto.cstiti.cs)。在Mercurial中合併時排除文件

有沒有辦法,當我想合併BA,排除titi.cs從合併,只合並toto.cs?如果可能的話,我該怎麼做?

回答

6

當然。不合並titi.cs實際上只是正確地使用titi.cs,因爲它存在於A或B中(您的選擇)。你可以做到這一點手動這樣的:

hg update A 
hg merge B 
hg revert --rev A titi.cs 

(交換A和B去另一個方向)。
或者你可以在你的Merge Tool Confguration中自動執行,在.hgrc中這樣做。

[merge-patterns] 
titi.cs = internal:local 

這告訴Mercurial總是使用「這一個不是那一個」匹配那個模式的文件。

+0

非常感謝您的回答! – MaT

+1

你也應該知道,[如果「其他」分支更改文件和「本地」不,使用內部合併:本地工具將包括改變,反之亦然(HTTP://mercurial.selenic。 COM /維基/ TipsAndTricks#mergemineortheir) – sventevit

3

如果您正在討論您想要免除合併的某個文件,請參閱@Ry4chan's answer。這是完全有效的:一些文件,比如與構建相關的配置文件,可以自動生成,並且對它們的衝突解決無用。或者,您可能實際上想要放棄在源文件中所做的更改。

另一方面,如果您試圖模仿SVN類系統的文件或目錄限制合併,請小心。技巧並不意味着你合併了一些文件,並沒有合併其他文件:你合併了所有的東西,復原只是一種合併。

如果你想要一些變化從一個分支移動到另一個(比如,反向移植在某個子系統的舊穩定分支修復),你不合並與修訂的文件;相反,您合併了包含修復程序的變更集; hg graft將幫助你這樣做。