Meld

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 01:04, 23 декабря 2017.
Meld
48px-Meld Logo-48.svg.png
Meld file1.png
Создатели: Стивен Кеннеди,
Кай Вилладсен
Выпущена: май 2002[1]
Постоянный выпуск: 3.14.1 / 4 октября 2015[2]
Написана на: Python
Операционная система: Linux,
Mac OS X[3]
UNIX-подобные,
Windows[4]
Linux
Платформа: Windows, Mac OS X, Linux
Локализация: русский и др.
Лицензия: GNU GPL
Веб-сайт http://meldmerge.org/

Meld — очень полезная программа для наглядного сравнения файлов и катологов; кроссплатформенная программа (OS X, Linux, Windows) для синхронизации файлов и директорий. С ее помощью осуществляется как двух-, так и трехстороннее сравнение. . Это что-то вроде утилиты diff, но в графическом виде с возможностью «сливать» изменения, удалять и восстанавливать файлы. Можно сравнивать как два, так и три файла или каталога одновременно.[Источник 1]

Оценка программы MELD

Image5sdfghjk.png

Несмотря на поддержку нескольких платформ, приложение далеко не стабильно функционирует в Windows. Скажем, вкладки и окна не всегда открываются и закрываются корректно. Возможно, проблемы связаны с библиотекой PyGTK, входящей в инсталлятор. Запустить программу получилось не сразу и только от имени администратора. Ошибки возникают постоянно, в подтверждение — перечень текущих проблем.В процессе сравнения файлов можно задействовать текстовый фильтр или поиск (поддерживается синтаксис regex). Предусмотрены подсветка синтаксиса (используется библиотека gtksourceview), нумерация строк, учет пробелов и другие опции, которые нужно активировать через настройки, так как по умолчанию они отключены. Вставки, изменения и конфликты в документе подсвечиваются, возможна быстрая навигация по списку изменений и экспорт в формате diff. Связь между файлами легко отследить с помощью соединительных линий и одним кликом произвести слияние нужных участков.

Сканирование файлов директорий работает очень медленно. Это связано с тем, что сравнение осуществляется по содержимому, а не по размеру и временной отметке. Проблема решается установкой флажка напротив соответствующей опции в настройках. Набор доступных колонок весьма ограничен: размер, дата модификации и разрешения. Хотя и можно воспользоваться файловым фильтром, просмотр длинного списка файлов все равно превращается в рутинный процесс: нельзя мгновенно остановить сканирование, свернуть дерево файлов, быстро переместиться к нужным элементам. Разработчикам будет интересен третий режим работы приложения — Version Control View. Meld поддерживает интерфейс командной строки, поэтому предусмотрена интеграция со средами Git, Bazaar, Mercurial, Subversion и многим другими.Meld представлен для большинства Linux дистрибутивов (Ubuntu, Suse, Fedora и др.), и присутствует в их основных репозиториях.

Плюсы и минусы программы Meld

двустороннее и трехстороннее слияние файлов

Плюсы:

  • GPLv2;
  • двустороннее и трехстороннее слияние файлов;
  • сравнение директорий;
  • поддержка систем контроля версий;
  • подсветка синтаксиса (при установленном GtkSourceView).

Минусы:

  • для установки под Windows требуется установить Python, GTK+, Glibc, GtkSourceView[5], что не каждому понравиться;
  • медленная и нестабильная работа в Windows;
  • неудобный и неинформативный интерфейс.

Резюме

Программа Meld зарекомендовала себя с хорошей стороны в среде Linux, чего нельзя сказать о функционировании в Windows. Нестабильная работа и неудобный интерфейс, отсутствие сессий, недостаточная гибкость настройки... С другой стороны, инструментарий программы неплох, а качественная адаптация Meld для Windows, возможно, лишь вопрос времени.[Источник 2]

Обзор Meld

Функции программы Meld

  1. Сравнение двух-трёх файлов или каталогов.
  2. Создание файлов правки (англ. patch file) с описанием различий между файлами — Patchwork (Алгоритм).
  3. Работа с системами управления версиями Git, Subversion, Mercurial, Bazaar и CVS (Concurrent Versions System).
  4. Вкладочный интерфейс[6].[Источник 3]

Принцип работы программы Meld

Итак начнём с diff-а. Первое что стоит сделать это посмотреть документацию у meld: "meld –help", из которой узнаём, что достаточно передать ему, в качестве параметров, 2 пути к сравниваемым файлам или директориям. Теперь разберёмся с git, опять пойдём в документацию и вытащим из неё вот такие пару строк для git config:

[diff]
    tool = meld
[difftool "meld"]
    cmd = meld $LOCAL $REMOTE

Ну или для Windows вот так:

[diff]
    tool = meld
[difftool "meld"]
    cmd = meld.exe $LOCAL $REMOTE

Плюс для Windows нужно будет добавить директорию "meld.exe" в PATH. В секции "difftool", как можно догадаться, определяется команда, для вызова внешнего инструмента. А в "diff" - название используемой секции по умолчанию. Тут единственная магия это 2 служебных переменных, которые предоставляет git:

  • $LOCAL - это путь к временному файлу, в котором храниться текущее (локальное) состояние файла.
  • $REMOTE - это тоже путь к временному файлу, в котором храниться содержимое файла с которым мы будем сравнивать, в зависимости от параметров сравнения там может лежать например последняя закомиченная версия файла из ветки master.

Всё, теперь можно посмотреть например разницу между локальными изменениями и версиями файлов в HEAD, запустив:

$git difftool

Чуть улучшить результат можно вот так:

$git difftool --dir-diff

Теперь meld будет открывать не каждый файл по очереди, а покажет сразу все изменения, которые мы запросили в виде сравнения двух директорий. Что бы не писать такую большую команду каждый раз, git даёт нам возможность настроить алиасы:

[alias]
    df = difftool --dir-diff

Теперь разницу между мастером и branch1, можно посмотреть вот так:

$git df master branch1

Для мержа всё не сильно сложнее, опять смотрим справку по meld, там пишут что нужно в качестве параметров указать 3 файла и в параметре "–output" указать какой из них использовать для сохранения результата. Для git тоже обратимся к документации и получим вот это:

[alias]
    mt = mergetool -t meld
[merge]
    tool = meld
[mergetool "meld"]
    prompt = false
    keepBackup = true
    cmd = meld "$LOCAL" "$MERGED" "$REMOTE" --output="$MERGED"

з незнакомых опций тут следующие:

  • prompt = false - не делать запросов перед мёржем каждого файла.
  • keepBackup = true - создавать бекапы исходных файлов, перед объединением, хотя многим может не понравиться, т.к. их придётся потом удалять, но как отключить такое поведение я думаю понятно.
  • $MERGED - служебная переменная, в которой храниться файл, в который, как ожидает git мы запишем результат мёржа.

Ну и запуск, с учётом алиасов, выглядит вот так:

$git mt

Git в ответ будет последовательно открывать meld для каждого конфликта в режиме 3-х стороннего мёржа.[Источник 4] Всё вместе это выглядит вот так:

[alias]
    df = difftool --dir-diff
    mt = mergetool -t meld
[diff]
    tool = meld
[difftool "meld"]
    cmd = meld $LOCAL $REMOTE
[merge]
    tool = meld
[mergetool "meld"]
    prompt = false
    keepBackup = true
    cmd = meld "$LOCAL" "$MERGED" "$REMOTE" --output="$MERGED"

Как сравнить файлы и папки

Установка Meld в Windows

1) Python:

2) GTK+ All-in-one bundle:

3) Python gnome bindings:

4) libglade:

5) gtksourceview:

6) Cygwin:

  • http://www.cygwin.com/setup.exe.
  • Устанавливаем по ситуации (напр. c:\dev\cygwin).
  • Если же не работает, ни без Cygwin'а, ни с ним, нужно доустановить пакет patch.

7) Download meld source code:

8) Add this to your Path:

  • в переменную PATH нужно добавить пути к python'у (пункт 1, c:\dev\python), к библиотекам (пункты 2, 4 и 5, c:\dev\gtk\bin, c:\dev\glade\bin и c:\dev\gtksourceview\bin) и к Cygwin'у, если установлен (пункт 6, c:\dev\cygwin\bin). Еще можно добавить путь к самому Meld'у (пункт 7, c:\dev\meld\meld-1.3.1)

Теперь, если запустить python, указав путь к Meld'у (c:\dev\meld\meld-1.3.1\meld) в качестве параметра, должно открыться окно Meld'а.[Источник 5]

Галерея Meld

Meld - сравнение файлов
Meld - сравнение директорий
Фывап.png
Эждлор.png











































Установка и настройка Meld

Установка и настройка Meld для Windows

Установка и настройка Meld Diff Viewer на Ubuntu 12.04

Примечания

  1. Первая тестовая версия. См. файл NEWS в архиве с исходными кодами Meld.
  2. Репозиторий Meld
  3. С использованием программ MacPorts или Fink. Официальный сайт Meld
  4. Инструкция по запуску Meld в Windows. (англ.)
  5. GtkSourceView библиотека GNOME, которая расширяет GtkTextView, стандартный виджет GTK+ для многострочного редактирования текста. Она добавляет поддержку выделения синтаксиса, отмены/повтора, загрузки и сохранения файлов, поиска и замены, системы завершения, печати, отображения номеров строк и других функций, характерных для редактора исходного кода. https://wiki.gnome.org/Projects/GtkSourceView
  6. Многодокументный интерфейс с вкладками (англ. tabbed document interface) https://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BD%D1%8B%D0%B9_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_%D1%81_%D0%B2%D0%BA%D0%BB%D0%B0%D0%B4%D0%BA%D0%B0%D0%BC%D0%B8

Источники

  1. Meld Наглядное сравнение файлов// Пингвинус. [2009-2017]. Дата обновления: 04.03.2017. URL: http://pingvinus.ru/program/meld (дата обращения:22.12.2017)
  2. Обзор инструментов для визуального сравнения и разрешения конфликтов слияния // Habrahabr. [2006-2017]. Дата обновления: 22.08.2012. URL: https://habrahabr.ru/post/150001/ (дата обращения:22.12.2017)
  3. Meld // Wikipedia. [2006-2017]. Дата обновления: 04.03.2017. URL: https://ru.wikipedia.org/wiki/Meld (дата обращения:22.12.2017)
  4. Подружить git и meld за 5 минут // Blogspot. [2017-2017]. Дата обновления: 19.11.2015. URL: http://reangdblog.blogspot.com/2015/11/git-meld-5.html (дата обращения:22.12.2017)
  5. Meld в Windows // Habrahabr. [2006-2017]. Дата обновления: 15.03.2010. URL: https://habrahabr.ru/post/87597/ (дата обращения:22.12.2017)