2011-01-10 55 views
5

我正在與Mercurial玩耍,看看它是否適合我們公司使用。其中最大的賣點之一就是合併能力。所以我一直在創建分支並將它們合併回默認行。測試包括簡單地將一個新方法(methodA)添加到一個分支中的單個Java文件,並在另一個分支中的同一文件的完全不同的位置添加一個不同的方法(methodB)。與MercurialEclipse合併時,在命令行合併時會自動解決衝突

當我第一次在Eclipse中使用team-> merge選項嘗試它時,發現第一個合併工作正常(即它添加了方法A)。當我嘗試合併第二個分支時,它告訴我必須解決衝突。這是非常不幸的,因爲我認爲這種簡單的合併恰恰是Mercurial應該輕鬆處理的那種東西?

我試着使用命令行完全相同的測試,這次它工作正常,即兩個合併都成功了,無需解決衝突。在Eclipse中尋找它在控制檯輸出使用下面的命令來執行合併:當我在命令行中運行它自己

hg -y merge --config ui.merge=internal:fail -r 611ca2784593525cdafd3082b17d3310037a5d58 -f 

,而我只是做:

hg merge -r 1234 

是使用合併策略'內部:失敗'導致這在Eclipse中發生?如果是這樣的話,是否可以改變默認行爲,使其與命令行中的行爲一樣?

+0

是。以下是HG網站上的提示和技巧鏈接。 http://mercurial.selenic.com/wiki/TipsAndTricks#line-227(在撰寫本文時,這是小貼士)。我看到的唯一選擇是使用外部合併工具。不知道它做什麼,因爲我使用TortoiseHG進行大部分HG交互。 TortoiseHG的下一個版本非常好,因爲它現在是一個工作臺,所以可以從一個用戶界面做所有事情。 – Mikezx6r

回答

8

internal:fail告訴Mercurial不要嘗試合併任何東西。有關更多詳細信息,請參見the mercurial wiki

似乎任何人寫的Eclipse插件mercurial覺得他們可以更好地控制日食中的合併,讓Mercurial自動無法合併所有內容,然後在Eclipse中進行合併,並且可能會在文件合併時調用hg resolve --mark ...

從Mercurial的命令行你得到兩個premerge行爲,處理瑣碎合併,然後如果還有從MergeToolConfiguration具有最高優先級的該文件類型,並提供對您的衝突工具的調用本地系統。

+5

謝謝,我能夠讓Eclipse插件通過勾選首選項中的'使用外部合併工具解決衝突'框自動執行簡單合併。只是有點不幸,你需要使用外部合併工具才能使插件也執行預混合行爲。理想情況下,我希望獲得premerge行爲,但仍然使用Eclipse來解決衝突。 – DaveJohnston