Как вы делаете трехстороннее слияние в FileMerge? - PullRequest
5 голосов
/ 22 июля 2010

Я вижу возможность указать три файла (левый, правый и предок), но на самом деле невозможно отобразить предка.

enter image description here

Нижняя панель показывает результат слияния. Я бы лучше посмотрел, что было в оригинальном контенте, чтобы я мог понять контекст для левой и правой сторон конфликта. Это возможно? FileMerge имеет ужасную справочную документацию.

Ответы [ 4 ]

5 голосов
/ 18 августа 2011

Похоже, в версии 2.5 они наконец-то добавили эту функцию.«Ancestor» теперь фактически означает «Ancestor», и есть отдельная опция «слияния»

. Из командной строки вы можете сделать что-то вроде этого:

$ opendiff mine theirs --ancestor base

Где «мой» мойверсия файла, «их» - это версия, с которой я пытаюсь слиться, а «база» - общий предок «моих» и «их».

Эта команда откроет «Объединение файлов» и покажетпредок внизу (где слияние в моем примере из 2010 года).

К сожалению, невозможно использовать параметр --merge вместе с параметром --ancestor. Таким образом, вы не можете просмотреть три-way merge И использовать File Merge для одновременного разрешения конфликтов.

Я начинаю использовать File Merge для просмотра и понимания конфликта, затем редактирую маркеры конфликта в текстовом редакторе, как обычно....)

4 голосов
/ 01 марта 2011

Насколько мне известно, это невозможно с filemerge.

Платное (но очень хорошее) приложение: http://www.deltopia.com/

Открытый исходный код: http://sourcegear.com/diffmerge/

3 голосов
/ 07 апреля 2012

@ mehaase: Это не совсем правильно.Вот документация по новой опции предка из справки FileMerge:

Sometimes, you need to compare two versions of a file that have been modified
independently. For example, say two people branch a file; that is, they make
copies of a file and modify it. In this case, specify an ancestor file, which
is the common ancestor of the modified files.

The ancestor file lets FileMerge choose when to take changes from the left
file or the right file. For example, say the left file and the right file
contain a different version of line 33. If line 33 in the ancestor matches
line 33 in the left file, you know the change happened after the two files
branched off, and FileMerge prefers the newer version of line 33 in the right
file. If line 33 is different among the three files, you know that the files’
editors edited the lines separately. FileMerge displays that difference with
a red border and asks you to choose with edit to use.

Таким образом, предок по-прежнему не отображается, но он помогает инструменту слияния принимать немного более обоснованные решения, когда он решает выбрать левый.или правые стороны по умолчанию.

2 голосов
/ 31 октября 2013

Я понимаю, что этот ответ технически не отвечает на вопрос о том, как это сделать с FileMerge , но я использую kdiff3 (доступно для Windows, Mac и * nix), и он показывает базу / предок, плюс влево и вправо, плюс вывод / результат, для трехстороннего слияния. (http://kdiff3.sourceforge.net/)

Это не симпатичный пользовательский интерфейс, но (ИМХО) он довольно прост в использовании и хорошо работает. И это с открытым исходным кодом. : -)

...