Перейти к содержимому

Kdiff3 что это за программа

  • автор:

KDiff3

Recuva icon

Uptodown — это мультиплатформенный магазин приложений, который специализируется на Android. Наша цель — предоставить бесплатный и открытый доступ к большому каталогу приложений, а также легальную платформу для их распространения, доступную из любого браузера, вместе с официальным нативным приложением.

ПРОДУКТЫ И УСЛУГИ

  • О нас
  • Опубликуйте приложение
  • Реклама
  • Часто задаваемые вопросы и поддержка
  • Работа у нас
  • Корпоративный блог
  • Условия предоставления услуг для пользователей
  • Политика конфиденциальности
  • Параметры Cookie
  • Условия предоставления услуг для разработчиков
  • DMCA

Обзор инструментов для визуального сравнения и разрешения конфликтов слияния

На хабре уже было много статей о распределенных системах управления версиями (DVCS), их сравнений, а также сравнений GUI-клиентов для них. Также были обсуждения плагинов к IDE для работы с git и mercurial. Но практически не было информации об инструментах визуального сравнения и разрешения конфликтов слияния.

diff and merge

Недавно я «перескочил» с mercurial (который до сих пор считаю более удобным и логичным) на git, потому что, подавляющее большинство проектов, которые мне интересны, используют git и хостятся на github. В связи с этим, встал вопрос о пересмотре арсенала инструментов, в частности вопрос выбора инструмента визуального сравнения и слияния (diff and merge). Дабы восполнить недостаток информации на хабре, я решил написать этот мини-обзор. Как говориться — по горячим следам.

Под катом Вы также найдете примеры настроек Git для использования с DiffMerge и WinMerge под Windows. Думаю многим сэкономит время.

KDiff3

  • бесплатен;
  • поддерживает трехстороннее слияние;
  • умеет сравнивать директории;
  • с различными кодировками работает нормально;
  • без дополнений не подсвечивает синтаксис.

DiffMerge

  • бесплатен;
  • поддерживает трехстороннее слияние;
  • умеет сравнивать директории.
  • бывают проблемы при работе с кириллицей. Думаю, со временем, исправят.
  • DiffMerge по умолчанию, не поддерживает подсветку синтаксиса языков программирования.

WinMerge

  • Open Source;
  • никаких проблем с кодировками;
  • подсветка синтаксиса без лишних телодвижений;
  • сравнение директорий.
  • инструмент слияния является двусторонним, что может создавать неудобства в некоторых случаях;
  • Windows only.

Meld

  • GPL v2;
  • двустороннее и трехстороннее слияние файлов;
  • сравнение директорий;
  • подсветка синтаксиса (при установленном GtkSourceView).
  • для установки под Windows требуется установить Python, GTK+, Glib, GtkSourceView, что не каждому понравиться.

Diffuse

  • GPL;
  • поддержка 2-way, 3-way и n-way (произвольное количество файлов) слияния;
  • подсветка синтаксиса;
  • отлично работает с UTF-8;
  • неограниченная глубина отмен (Undo);
  • удобная навигация по коду.
  • разве что, невозможность сравнивать директории.

TKDiff

  • GPLv2;
  • можно добавлять закладки для различий;
  • с кодировками работает нормально;
  • интерфейс менее удобен и выглядит очень бедно (см. скриншот), чем у других продуктов.
  • нет подсветки синтаксиса;
  • не умеет сравнивать директории.

SmartSynchronize

  • трехстороннее слияние;
  • нет проблем с кодировками;
  • помимо файлов, может сравнивать директории.
  • для коммерческого использования требуется лицензия;
  • подсветка синтаксиса для языков программирования по умолчанию не предусмотрена. Не исключено, что можно как-то сделать.

BeyondCompare

  • трехстороннее слияние;
  • может сравнивать файлы, директории, удаленные директории, архивы, а также MP3-файлы, изображения и др. Но последние пункты — это в принципе не нужный функционал.
  • ShareWare;
  • нет версии под Mac.

Araxis Merge

  • трехстороннее слияние;
  • нет проблем с кодировками;
  • подсвечивает синтаксис;
  • помимо файлов, может сравнивать директории и синхронизировать их;
  • хорошо работает на сравнении больших файлов (гигабайты) и больших директорий;
  • генерация отчётов по результатам сравнения.
  • Ribbon-интерфейс (если это можно назвать плюсом).
  • ShareWare;
  • нет версии под Linux.

В принципе, все перечисленные инструменты хорошо справляются со своими задачами и данный обзор не тема для спора, т.к. каждый выбирает инструмент по вкусу.
Далее приводятся примеры настроек Git для работы с DiffMerge и WinMerge. По аналогии можно настроить взаимодействие Git с другими инструментами.

Git и DiffMerge

1) Добавим в директорию c:/Git/libexec/git-core/mergetools/
файл diffmerge следующего содержания:

diff_cmd () < "c:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe" \ "$LOCAL" "$REMOTE" >/dev/null 2>&1 > merge_cmd () < "c:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe" \ --merge --result="$MERGED" "$LOCAL" "$BASE" "$REMOTE" >/dev/null 2>&1 status=$? > 

2) Теперь добавим в файл c:/Users/swipe/.gitconfig
следующие строки:

[diff] tool = diffmerge [merge] tool = diffmerge [mergetool "diffmerge"] cmd = "diffmerge" trustExitCode = true 

3) Создадим конфликт и вызовем DiffMerge для его разрешения

git init // инициализируем репозиторий создадим пустой файл readme.txt git add . // добавим созданный файл в индекс git commit -m "empty readme" // зафиксируем изменения git branch new // создадим новую ветку git checkout new // переключимся на новую ветку добавим строку в файл readme.txt git add . // добавим изменения в индекс git commit -m "new string" // зафиксируем изменения в новой ветке git checkout master // переключися на master ветку добавим изменения в файл readme.txt git add . // добавим изменения в индекс git commit -m "master string" // зафиксируем их git hist --all // посмотрим на дерево 

tree

git difftool master new // сравним две ветви

diff

git merge new // сольем изменения в new с веткой master

conflict

Выводится сообщение о конфликте слияния, чего мы и добивались.

git mergetool // разрешим этот конфликт

merge

В среднем окне, приведем файл к требуемому состоянию и сохраним изменения.
Конфликт разрешен.
Настройку DiffMegre подсмотрел тут:
http://twobitlabs.com/2011/08/install-diffmerge-git-mac-os-x/

Git и WinMerge

1) Добавим в директорию c:/Git/libexec/git-core/mergetools/
файл winmerge следующего содержания:

diff_cmd () < "c:/Program Files (x86)/WinMerge/WinMergeU.exe" \ "$LOCAL" "$REMOTE" >/dev/null 2>&1 > merge_cmd () < "c:/Program Files (x86)/WinMerge/WinMergeU.exe" \ "$PWD/$LOCAL" "$PWD/$REMOTE" "$PWD/$MERGED" >/dev/null 2>&1 status=$? > 

Когда Git не может автоматически объединить изменения, происходит конфликт слияния и в конфликтующий файл добавляются маркеры слияния (>>>>>>). Они необходимы для разрешения конфликта с помощью сторонних инструментов.
Рассмотрим файл readme.txt который образуется в результате выполнения слияния веток master и new в приведенном выше примере:

Мы можем открыть файл конфликтов с помощью программы WinMerge для разрешения конфликта.

open

После этого откроется средство двухстороннего слияния:

winmerge

Исходя из описанной логики перепишем команду слияния merge_cmd следующим образом:

merge_cmd () < "c:/Program Files (x86)/WinMerge/WinMergeU.exe" \ "$MERGED" >/dev/null 2>&1 status=$? > 

По сути, оба приведенных варианта эквивалентны.

2) Отредактируем .gitconfig

[diff] tool = winmerge [difftool "winmerge"] cmd = "winmerge" [merge] tool = winmerge [mergetool "winmerge"] cmd = "winmerge" trustExitCode = false keepBackup = false 

последняя строчка отменяет сохранение backup-файлов в директории репозитория.

3) Создадим конфликт при слиянии двух веток (см. пример с использованием DiffMerge).

git difftool master new // сравним две ветви

windiff

Для разрешения конфликта при слиянии веток, воспользуемся командой

git mergetool

Аналоги kdiff3

KDiff3 — это инструмент сравнения и слияния файлов и каталогов.
Функции:

— Сравнивает и объединяет два или три файла ввода текста или каталоги.

— Показывает различия строка за строкой и символ за символом (!).

— Обеспечивает автоматическое объединение объектов.

— Имеет редактор для удобного решения конфликтов слияния.

— Обеспечивает прозрачность сети через KIO.

— Имеет опции, чтобы выделить или скрыть изменения в пустом пространстве или комментарии.

— Поддерживает Unicode, UTF-8 и другие кодировки файлов.

— Поддерживает контроль версий ключевых слов и истории слияния.

  • Управление версиями
  • Сравнение папок

Альтернативы для kdiff3

Персональный компьютер
Мобильный телефон

431

  • Бесплатная
  • Windows

Скриншот 1 программы WinMerge

WinMerge — это средство для сравнения и синхронизации Open Source для Windows. WinMerge может сравнивать как папки, так и файлы, представляя различия в визуальном текстовом формате, который легко понять и обрабатывать. Программа имеет 32 языка. С помощью xdocdiff-Plugin вы даже можете сравнить Word, Excel, PowerPoint, PDF и некоторые другие файлы.

301

  • Бесплатная
  • Windows
  • Mac OS

Скриншот 1 программы Meld

Meld — инструмент визуального сравнения и слияния. Вы можете сравнить два или три файла и редактировать их тут же (данные о различиях файлов обновляются динамически). Вы можете сравнить две или три папки и запустить сравнение файлов. Вы можете найти и просмотреть рабочую копию в популярных системах контроля версий, таких как CVS, Subversion, Bazaar-ng и Mercurial. Написано на Python и GTK.

254

  • Платная
  • Windows
  • Mac OS

Скриншот 1 программы Beyond Compare

Beyond Compare позволяет сравнивать файлы и папки. Используя простые мощные команды, вы можете сосредоточиться на различиях, которые вас интересуют, и игнорировать те, которые вам не нужны, вы можете объединить изменения, синхронизировать файлы и создавать отчеты.

36

  • Платная
  • Windows
  • Mac OS

Скриншот 1 программы Araxis Merge

Merge — это приложение визуального сравнения файлов (diff), слияния и синхронизации папок от Araxis. Используйте его для сравнения и объединения исходного кода, веб-страниц, XML и других текстовых файлов с собственной производительностью приложения.

36

  • Бесплатная
  • Windows
  • Mac OS

Скриншот 1 программы DiffMerge

DiffMerge — это графическая программа сравнения файлов для Windows, Mac OS X и Unix, опубликованная SourceGear.

Что в этом списке?

В списке находится программы которые можно использовать для замены kdiff3.

Это аналоги похожие по функционалу на kdiff3, которые заменяют программу частично или полностью. Этот список содержит 5 замен.

С помощью пользователей мы собираем каталог похожих друг на друга программ, чтобы вы могли подобрать альтернативу и скачать их. На сайте можно скачать популярные программы для Windows, Mac Os, Android и iPhone

Пакет: kdiff3 (1.10.7-1 и другие)

KDiff3 compares two or three input files and shows the differences line by line and character by character. It provides an automatic merge facility and an integrated editor for comfortable solving of merge conflicts. KDiff3 allows recursive directory comparison and merging as well. KDiff3 also has KIO support, so it can access to remote files and compressed archives.

Теги: Реализовано на: C++, Пользовательский интерфейс: Командная строка, interface::graphical, interface::x11, Роль: Программа, Область: Утилита, Комплект приложений: suite::kde, uitoolkit::qt, Цель: Сравнение, Работает с: works-with::software:source, works-with::text, X Window System: Приложение

Другие пакеты, относящиеся к kdiff3

  • dep: kio resource and network access abstraction
  • dep: libatomic1 (>= 4.8) [armel, m68k, sh4] библиотека для атомарного выполнения кода
  • dep: libc6 (>= 2.34) [не alpha, ia64, sh4, sparc64] библиотека GNU C: динамически подключаемые библиотеки
    также виртуальный пакет, предоставляемый libc6-udeb dep: libc6 (>= 2.37) [sh4] dep: libc6 (>= 2.4) [sparc64]
  • dep: libc6.1 (>= 2.33) [ia64] библиотека GNU C: динамически подключаемые библиотеки
    также виртуальный пакет, предоставляемый libc6.1-udeb dep: libc6.1 (>= 2.34) [alpha]
  • dep: libgcc-s1 (>= 3.0) [amd64, arm64, mips64el, ppc64, ppc64el, s390x] вспомогательная библиотека GCC dep: libgcc-s1 (>= 3.4) [alpha, riscv64, sh4, sparc64] dep: libgcc-s1 (>= 3.5) [armel, armhf] dep: libgcc-s1 (>= 4.2) [i386, ia64]
  • dep: libgcc-s2 (>= 4.2.1) [m68k] вспомогательная библиотека GCC
  • dep: libgcc-s4 (>= 4.1.1) [hppa] вспомогательная библиотека GCC
  • dep: libkf5auth5 (>= 4.96.0) [sparc64] Abstraction to system policy and authentication features
  • dep: libkf5authcore5 (>= 5.61.0) [sparc64] Abstraction to system policy and authentication features
  • dep: libkf5codecs5 (>= 4.96.0) [sparc64] collection of methods to manipulate strings
  • dep: libkf5completion5 (>= 4.97.0) [sparc64] Widgets with advanced auto-completion features.
  • dep: libkf5configcore5 (>= 5.37.0~) [ia64, sparc64, x32] configuration settings framework for Qt dep: libkf5configcore5 (>= 5.50.0~) [не ia64, sparc64, x32]
  • dep: libkf5configgui5 (>= 5.37.0~) [sparc64] configuration settings framework for Qt
  • dep: libkf5configwidgets5 (>= 5.23.0) Extra widgets for easier configuration support.
  • dep: libkf5coreaddons5 (>= 5.37.0~) [ia64, sparc64, x32] KDE Frameworks 5 addons to QtCore dep: libkf5coreaddons5 (>= 5.50.0~) [не ia64, sparc64, x32]
  • dep: libkf5crash5 (>= 5.37.0~) [ia64, sparc64, x32] Support for application crash analysis and bug report from apps dep: libkf5crash5 (>= 5.50.0~) [не ia64, sparc64, x32]
  • dep: libkf5i18n5 (>= 5.37.0~) [ia64, sparc64, x32] Advanced internationalization framework. dep: libkf5i18n5 (>= 5.50.0~) [не ia64, sparc64, x32]
  • dep: libkf5jobwidgets5 (>= 4.96.0) [sparc64] Widgets for tracking KJob instances
  • dep: libkf5kiocore5 (>= 5.69.0) resource and network access abstraction (KIO core library)
  • dep: libkf5kiogui5 (>= 5.69.0) [sparc64] resource and network access abstraction (KIO gui library)
  • dep: libkf5kiowidgets5 (>= 5.69.0) resource and network access abstraction (KIO widgets library)
  • dep: libkf5parts5 (>= 5.37.0~) [ia64, sparc64, x32] Document centric plugin system. dep: libkf5parts5 (>= 5.50.0~) [не ia64, sparc64, x32]
  • dep: libkf5service-bin [sparc64] Advanced plugin and service introspection
  • dep: libkf5service5 (>= 4.96.0) [sparc64] Advanced plugin and service introspection
  • dep: libkf5solid5 (>= 4.97.0) [sparc64] Qt library to query and control hardware
  • dep: libkf5sonnetui5 (>= 4.96.0) [sparc64] spell checking library for Qt, ui lib
  • dep: libkf5textwidgets5 (>= 4.96.0) [sparc64] Advanced text editing widgets.
  • dep: libkf5widgetsaddons5 (>= 5.37.0~) [ia64, sparc64, x32] add-on widgets and classes for applications that use the Qt Widgets module dep: libkf5widgetsaddons5 (>= 5.50.0~) [не ia64, sparc64, x32]
  • dep: libkf5windowsystem5 (>= 4.96.0) [sparc64] Convenience access to certain properties and features of the window manager
  • dep: libkf5xmlgui5 (>= 4.98.0) User configurable main windows.
  • dep: libqt5concurrent5 (>= 5.8.0~) [sparc64] Qt 5 concurrent module
  • dep: libqt5core5a (>= 5.15.1) [ia64, sparc64, x32] Qt 5 core module dep: libqt5core5a (>= 5.15.2~) [не ia64, sparc64, x32]
  • dep: libqt5dbus5 (>= 5.8.0~) [sparc64] Qt 5 D-Bus module
  • dep: libqt5gui5 (>= 5.11.0~rc1) [ia64, sparc64, x32] Qt 5 GUI module или libqt5gui5-gles (>= 5.11.0~rc1) Qt 5 GUI module — OpenGL ES variant dep: libqt5gui5 (>= 5.15.2~) [не ia64, sparc64, x32] или libqt5gui5-gles (>= 5.15.2~)
  • dep: libqt5network5 (>= 5.8.0~) [sparc64] Qt 5 network module
  • dep: libqt5printsupport5 (>= 5.15.2~) [не ia64, sparc64, x32] Qt 5 print support module dep: libqt5printsupport5 (>= 5.8.0~) [ia64, sparc64, x32]
  • dep: libqt5widgets5 (>= 5.15.1) [ia64, sparc64, x32] Qt 5 widgets module dep: libqt5widgets5 (>= 5.15.2~) [не ia64, sparc64, x32]
  • dep: libqt5xml5 (>= 5.8.0~) [sparc64] Qt 5 XML module
  • dep: libstdc++6 (>= 11) [не m68k] стандартная библиотека GNU C++ версии 3 dep: libstdc++6 (>= 12.2.0-12) [m68k]
  • dep: libx11-6 [sparc64] библиотека X11 для клиентской стороны
  • rec: kdiff3-doc documentation for KDiff3

Загрузка kdiff3

Загрузить для всех доступных архитектур

Архитектура Версия Размер пакета В установленном виде Файлы
alpha (неофициальный перенос) 1.10.6-1 1 039,9 Кб 7 091,0 Кб [список файлов]
amd64 1.10.7-1 1 081,0 Кб 6 364,0 Кб [список файлов]
arm64 1.10.7-1 1 005,7 Кб 6 453,0 Кб [список файлов]
armel 1.10.7-1 958,7 Кб 5 858,0 Кб [список файлов]
armhf 1.10.7-1 971,1 Кб 5 162,0 Кб [список файлов]
hppa (неофициальный перенос) 1.10.7-1 1 083,4 Кб 6 828,0 Кб [список файлов]
i386 1.10.7-1 1 118,0 Кб 6 330,0 Кб [список файлов]
ia64 (неофициальный перенос) 1.9.5-1 906,8 Кб 7 476,0 Кб [список файлов]
m68k (неофициальный перенос) 1.10.4-1 1 055,3 Кб 6 093,0 Кб [список файлов]
mips64el 1.10.7-1 978,4 Кб 7 462,0 Кб [список файлов]
ppc64 (неофициальный перенос) 1.10.7-1 1 048,4 Кб 7 695,0 Кб [список файлов]
ppc64el 1.10.7-1 1 057,2 Кб 7 280,0 Кб [список файлов]
riscv64 1.10.7-1 1 042,8 Кб 5 692,0 Кб [список файлов]
s390x 1.10.7-1 1 030,5 Кб 6 464,0 Кб [список файлов]
sh4 (неофициальный перенос) 1.10.7-1 1 163,6 Кб 6 246,0 Кб [список файлов]
sparc64 (неофициальный перенос) 1.9.5-1 747,3 Кб 5 124,0 Кб [список файлов]
x32 (неофициальный перенос) 1.9.6-1 852,1 Кб 4 831,0 Кб [список файлов]

Эта страница также доступна на следующих языках (Как установить язык по умолчанию):

Чтобы сообщить о проблеме, связанной с веб-сайтом, отправьте сообщение (на английском) в список рассылки debian-www@lists.debian.org. Прочую контактную информацию см. на странице Debian Как с нами связаться.

Авторские права © 1997 — 2024 SPI Inc.; См. условия лицензии. Debian это торговый знак компании SPI Inc. Об этом сайте.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *