2010-04-12 28 views
4

自從它首次推出以來,我一直是UltraCompare Pro的用戶,我認爲它是一個功能非常全面的比較和合並工具。但是,由於我一直在深入研究DVCS,我發現它處理三路合併的方式與其他(大多數)其他工具不同。所以我想知道這是爲什麼,以及是否因爲它而錯過了某些東西。三路合併 - 不同的哲學?

在UltraCompare中,有三個合併面板(讓我們稱它們爲基礎,本地和其他)。所有合併操作都發生在這些面板中。實際上,這意味着我在中間窗格(本地)上進行工作,合併右側(其他)或可能來自左側(基礎)上的共同祖先的更改。中間窗格在會話期間被修改,然後保存 - 並作爲合併的結果提交。第四個窗格(輸出窗口)僅包含有關diff結果的信息。

Screenshot UC http://www.ultraedit.com/assets/images/feature_map/uc/three_way_text.png

在其他工具,看來該三個窗格只存在於一個只讀狀態,並且所述第四,底部窗格(輸出)是其中所有的合併發生的地方。有一個額外的合併窗口的原因是什麼?跟蹤所有變化更容易嗎?或者是因爲這樣,因爲每個人都一直這樣做,所以我們正在複製這種行爲?你對此有何看法?

Screenshot kdiff3 http://hginit.com/i/04-kdiff3-after.png

我不知道是否存在一個最佳的或正確的答案,所以我還沒有作出這個問題CW,但我會聽從你的意見在這裏。

回答

6

對我來說似乎很簡單,當您進行更改時,您可能很希望保持不變的「本地」版本可見。

original  local   other   merged 

       bar= foo+1 bar= foo+2  bof= foo+2 
              zot= foo+1 
...   ...   ...    ... 
print foo  print bar  print foo+1  print bar?? 

兩個localother紛紛推出了新的變量bar。將第一次更改合併到bof/zot,去喝杯茶,回來並嘗試合併print。等一下,localbar是什麼?如果原來的local不在那裏,那麼這些信息就不存在了,而且你正在用另一個文本編輯器來查找發生了什麼。

這是一個人爲的例子,但這種事情可以很容易地發生的任何一套變化,你不能一直在你的腦海裏,一氣呵成。通常,3WM總是有兩個可變元素,變化A和變化B.要重現所有信息,您需要四個視圖來處理所有可能的排列:0(原始),ABAB(合併)。

+0

不看所有對我的設計。謝謝! – 2010-04-12 12:21:14

3

就我個人而言,我喜歡免費的perforce合併工具(p4merge)。它也有4個窗口 - 原始(分支之前)的中間,左側爲目標分支,右側爲源分支,底部爲可編輯。

我比你的選擇1更喜歡這一點,因爲所有3個原始文件可能有重要的信息,可能會影響合併。

2

基本上有顯示文件之間的差異兩種方式:

  • 並排兩個面板側
  • 一個面板

圖形:

aaa aaa 
bbb ··· 
··· ccc 
ddd ddd 

某些程序使用第一個程序(例如, WinMerge)和一些程序允許選擇(例如TortoiseMerge或Google Project Hosting)。這可能是品味的問題,但我發現第二個更直觀,當你想跟蹤變化。但是,當您想要編輯更改時,您需要兩個面板。

當做三路合併,不同的佈局來自於此。超比較使用單面板方法來顯示更改,以便您可以看到兩個面板和第三個面板進行編輯。其他程序使用兩種面板方式來顯示更改,因此您可以使用三個面板加上第四個面板進行編輯。

同樣,我相信這只是一個品味問題。

4

Project: Merge是我爲XML編寫的比較和合並工具。我研究了標準的4窗格方法,幾乎​​立即將其丟棄爲顯示數據的非常浪費的方式。在上面的截圖中充分證明了一點,幾乎所有窗格都多次顯示完全相同的數據。

因此,我開發了一種單窗格方法,用於顯示所有輸入文件並顯示其中哪些文件有助於輸出。 (或者在比較文件時區別在哪裏)。雖然我沒有允許對文本進行完全自由的表單編輯(主要是由於如何管理和引用XML節點),合併輸出的某些部分可以或多或少地作爲您編輯會在一個正規的文本編輯器。 (就導航而言,我的編輯器鍵盤快捷鍵緊跟在Visual Studio的鍵盤快捷鍵之後。)最值得注意的是字符數據,註釋和屬性值。您也可以完整地剪切和粘貼XML節點。 (但顯然只爲文本到外部應用程序)

下面的屏幕截圖顯示了三路與出現在「左」的文件大部分的改變,以及所選擇的變化低於未決衝突合併:

alt text

+0

我真的很喜歡這個工具!絕對值得考慮! – pablo 2011-01-04 19:27:02