GIT — Использование mcdiff в качестве внешней DIFF-утилиты

в 11:15, , рубрики: Git, git diff, open source, метки:

mcdiff

В составе Midnight Commander, помимо всем известного редактора mcedit, есть не менее замечательная утилита для сравнения файлов «бок о бок» (side-by-side) — mcdiff. В ней можно сравнивать и при необходимости производить полное или частичное слияние в обе стороны.

GIT — Использование mcdiff в качестве внешней DIFF утилиты

Историю появления утилиты mcdif когда-то уже рассказывал тут но ближе к делу…

Подключение mcdiff к git

чтобы использовать mcdiff совместно с git необходимо написать скрипт — обёртку diff_wrapper со следующим содержимым

#!/bin/sh

/usr/bin/mcdiff "$1" "$2"

после чего сохранить его. например, в директории ~/bin/ (или в любой для вас удобное место) не забыв дать права на исполнение

chmod +x ~/bin/diff_wrapper

Далее нужно настроить вызов обертки при выполнении команды git diff в файле .gitconfig.

мой файл .gitconfig содержит следующие строки

[diff]
    external = /home/holmes/bin/diff_wrapper

[pager]
    diff =
  • ключ external указывает какой внешней утилите будут переданы данные
  • ключ diff в секции pager указывает каким постраничным просмотровщиком будет перелистываться содержимое вывода, а т.к. утилита mcdiff всё управление берёт на себя, то ключ diff должен быть обнулён, если этого не сделать — можно получить кучу побочных эффектов.

так же добавив опцию -w можно отключить показ отличий в пробельных символах

git diff -w

однако mcdiff может и сам позаботиться об этом, достаточно нажать F9 и выбрать нужную опцию. Кроме того доступны другие вариант сравнения:

[x] Игнорировать регистр
[x] Игнорировать табуляции
[x] Игнорировать изменения в пробелах
[x] Игнорировать все пробелы
[x] Не учитывать переводы строк

Кроме того если нужно отказаться от запуска внешней утилиты сравнения необходимо добавить ключ --no-ext-diff:

git diff --no-ext-diff

И конечно же то чем я пользуюсь постоянно это функция частичного слияния файлов, клавиша F5 в mcdiff.

NB: Стоит обратить внимание, что внешняя утилита сравнения будет запущена для каждого файла изменённого в коммите, это не всегда удобно, но тут ничего не поделать, особенно если файлов очень много.

Дополнительную информацию можно почерпнуть на официальной странице руководства git

PS: Дайте знать если найдёте опечатки в тексте или хотите добавить что то к данной заметке…

Автор: smind

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js