kdiff3 что это за программа
Настройка KDiff3 для исключения номеров строк в отчетах о сравнении конфигураций
Введение
Там же приведен макрос для Notepad++, алгоритм которого я и взял за основу для настройки KDiff3.
Также в несколько строк и не очень внятно (размыто по тексту) об этом сказано на ИТС в Приложении 2 стандарта Технология разветвленной разработки конфигураций.
О процессе собственно обновления конфигураций на поддержке я нашел только:
Настройка KDiff3
Перейдем к делу, детали позже.
Если KDiff3 еще не установлена, дистрибутив находится здесь. Последняя версия на момент публикации 0.9.98.
Процесс установки тривиален, на этом останавливаться не будем.
Запускаем KDiff3, в диалоге выбора файлов просто жмем ОК.
Переходим к настройкам:
1. Settings – Configure KDiff3…
2. Переходим на вкладку Diff
3. И в поле Preprocessor command вводим такой текст:
Введем с левой стороны такой текст (надо просто скопипастить):
В результате должно получиться так:
Для сравнения, так было без этих настроек:
Как видно, ненужные нам номера строк заменены на символы ‘N’.
Но если вдруг случилось, что такой же текст встречается в коде, то он останется как есть.
Как это работает
Разберем подробно Preprocessor command:
Как сказано в документации, файлы, которые мы передаем KDiff3, перед сравнением проходят через препроцессор.
Препроцессор – это внешняя команда, указанная в настройке Preprocessor command.
В данном случае такой внешней командой является утилита sed.exe. Она расположена там же, где и исполняемый файл KDiff3 (у меня в C:\Program Files\KDiff3\bin\).
Т.е. первая часть Preprocessor command – это вызов утилиты sed.exe.
Утилита вызывается с командой s. Синтаксис этой команды: ‘s/regexp/replacement/flags’. Подробнее здесь.
В каждой строке исходного файла утилита ищет фрагменты, соответствующие выражению regexp, и если находит, то заменяет их по правилам, указанным в replacement. Флаги flags мы здесь не используем.
Различные примеры использования команды есть в документации KDiff3.
Самый простой пример: команда ‘s/EFGH/1234/’ заменит первое вхождение EFGH на 1234.
Попробуйте ввести в командной строке Windows:
Должно получиться:
Команда echo просто выводит текст в стандартный вывод.
А символ ‘|’ перенаправляет вывод предыдущей команды на вход следующей.
Пойдем дальше.
Фрагменты вида \xD0\x9E – как вы наверное догадались, это символы кириллицы в кодировке UTF8.
Если бы утилита sed понимала кириллицу, то команда была бы такой:
Теперь, когда буков стало меньше, дальше разобраться будет проще.
Утилита sed может принимать несколько команд. Отдельные команды разделяются символом ‘;’. Команды выполняются последовательно. Выход предыдущей является входом для следующей (но в данном случае мы эту возможность не используем).
В нашем случае по очереди выполняются две команды:
Разберем только первую. Вторая построена аналогично, и она чуть проще.
Наше выражение regexp (один из вариантов синтаксиса описан здесь) состоит из следующих элементов:
^ – начало строки;
[ \x09]* – 0 или более символов пробела или табуляции в любом сочетании;
.\+ – 1 или более любых символов;
[0123456789]\+ – 1 или более числовых символов в любом сочетании;
$ – конец строки.
Остальные фрагменты представляют сами себя.
Некоторые части выражения regexp могут быть взяты в скобки \(, \). То, что между этими скобками, становится самостоятельным подвыражением. А исходный текст, найденный с помощью такого подвыражения, запоминается как обратная ссылка. Каждой паре скобок соответствует отдельная обратная ссылка. Обратные ссылки нумеруются в порядке следования подвыражений слева направо, начиная с 1.
Обратные ссылки можно использовать в выражении replacement, обращаясь к ним по номерам: \1, \2 и т.д.
Таким образом, мы ищем такие строки, которые:
При этом мы запоминаем текст от начала строки до символа ‘:’ как обратную ссылку номер 1.
Здесь все значительно проще.
На этом всё!
Надеюсь, моя статья будет полезна.
Обзор инструментов для визуального сравнения и разрешения конфликтов слияния
На хабре уже было много статей о распределенных системах управления версиями (DVCS), их сравнений, а также сравнений GUI-клиентов для них. Также были обсуждения плагинов к IDE для работы с git и mercurial. Но практически не было информации об инструментах визуального сравнения и разрешения конфликтов слияния.
Недавно я «перескочил» с mercurial (который до сих пор считаю более удобным и логичным) на git, потому что, подавляющее большинство проектов, которые мне интересны, используют git и хостятся на github. В связи с этим, встал вопрос о пересмотре арсенала инструментов, в частности вопрос выбора инструмента визуального сравнения и слияния (diff and merge). Дабы восполнить недостаток информации на хабре, я решил написать этот мини-обзор. Как говориться — по горячим следам.
Под катом Вы также найдете примеры настроек Git для использования с DiffMerge и WinMerge под Windows. Думаю многим сэкономит время.
Название | Особенности | Платформа |
С этим инструментом скорее всего сталкивались как пользователи git, так и пользователи системы mercurial, тем не менее пару строк не помешает. Примечание: устанавливается вместе с TortoiseHg. | Windows, Mac OS X, Linux | |