Трехстороннее сравнение/слияние на основе предков с редактируемым выводом

Огромный файл Java был значительно изменен как моей компанией, так и другой компанией, и теперь пришло время объединиться.

Kdiff3 показывает свои пределы

Обычно я использую Meld или Kdiff3 , но сегодня я чувствую, что нужен инструмент получше. Meld не показывает ANCESTOR, а слияние в Kdiff3 означает, что для каждого изменения я могу оставить только МОИ или ИХ, я не могу добавить оба или отредактировать, чтобы объединить хорошие вещи с обеих сторон.

Абсолютные требования:

  • Посмотреть 3 файла рядом: ANCESTOR, THEIRS, MINE
  • Возможность редактирования MINE, сохранение обновляет сравнение/слияние
  • Показать разницу на уровне символов с цветом
  • Обновить не теряет местоположение курсора/прокрутки
  • Открытый исходный код
  • Можно использовать в Linux

Бонус за интеллектуальное распознавание блоков методов Java/C#:

  • Распознавайте прототипы методов и придавайте им гораздо больший вес, чем другим линиям.
  • Не разделяйте блоки Javadoc+method
  • UI складной метод за методом
  • В идеале может заранее сообщить мне о методах, которые были перемещены
  • Щедро добавляйте все импорты, так как удаление ненужных — это легко исправить позже.

Примечание . Каждая из двух веток имеет свою собственную историю коммитов и подветвей, которые общедоступны на Github.

В этом случае вы пытались запустить ветку на основе ваших изменений, а затем перебазировать ее на другой набор? Кажется, что проходить через изменения одно за другим было бы разумнее, чем одно сокрушительное трехстороннее слияние. Даже создание чистой ветки в точке их расхождения, а затем выборка изменений, которые вы хотите получить от каждой из них, будет лучше для работоспособности кода. Это предполагает, что люди сделали разумные добавочные коммиты, но, возможно, стоит проверить.
Я использую KDiff3 для всех своих слияний, и у меня есть возможность добавлять из МОИХ и ИХ, а также возможность редактировать конечный результат непосредственно в KDiff3. Я не уверен, почему вы утверждаете, что это невозможно.
@JasonDown: я ничего не могу редактировать с помощью kdiff3 0.9.97
У меня 0.0.96a, и я могу выбрать B, затем вернуться к строке, а также выбрать C (или наоборот), что вносит оба изменения. Кроме того, я могу перейти на панель вывода внизу и напрямую отредактировать вывод. файл при внесении изменений. Могу сделать скриншоты, если нужно.
Я имел в виду 0.9.96a под версию.
Любой, кто вернется к этому вопросу, может быть заинтересован в этом ответе от SO, описывающем, как показать BASE (аналогично ANCESTOR) в meld.

Ответы (1)

Как указал JasonDown, kdiff3 на самом деле более или менее способен на это.

Это не позволяет редактировать MINE, но панель вывода можно использовать для выбора обеих строк из ANCESTOR и THEIRS, и их можно редактировать.