Обзор инструментов для визуального сравнения и разрешения конфликтов слияния
На хабре уже было много статей о распределенных системах управления версиями (DVCS), их сравнений, а также сравнений GUI-клиентов для них. Также были обсуждения плагинов к IDE для работы с git и mercurial. Но практически не было информации об инструментах визуального сравнения и разрешения конфликтов слияния.
Недавно я «перескочил» с mercurial (который до сих пор считаю более удобным и логичным) на git, потому что, подавляющее большинство проектов, которые мне интересны, используют git и хостятся на github. В связи с этим, встал вопрос о пересмотре арсенала инструментов, в частности вопрос выбора инструмента визуального сравнения и слияния (diff and merge). Дабы восполнить недостаток информации на хабре, я решил написать этот мини-обзор. Как говориться — по горячим следам.
Под катом Вы также найдете примеры настроек Git для использования с DiffMerge и WinMerge под Windows. Думаю многим сэкономит время.
Название
Особенности
Платформа
KDiff3
[скриншот]
С этим инструментом скорее всего сталкивались как пользователи git, так и пользователи системы mercurial, тем не менее пару строк не помешает.
Примечание: устанавливается вместе с TortoiseHg.
Windows, Mac OS X, Linux
DiffMerge
WinMerge
Diffuse
TKDiff
SmartSynchronize
BeyondCompare
Araxis Merge
Git и DiffMerge
1) Добавим в директорию c:/Git/libexec/git-core/mergetools/ файл diffmerge следующего содержания:
2) Теперь добавим в файл c:/Users/swipe/.gitconfig следующие строки:
3) Создадим конфликт и вызовем DiffMerge для его разрешения
Выводится сообщение о конфликте слияния, чего мы и добивались.
В среднем окне, приведем файл к требуемому состоянию и сохраним изменения. Конфликт разрешен. Настройку DiffMegre подсмотрел тут: http://twobitlabs.com/2011/08/install-diffmerge-git-mac-os-x/
Git и WinMerge
1) Добавим в директорию c:/Git/libexec/git-core/mergetools/ файл winmerge следующего содержания:
Когда Git не может автоматически объединить изменения, происходит конфликт слияния и в конфликтующий файл добавляются маркеры слияния ( >>>>>>). Они необходимы для разрешения конфликта с помощью сторонних инструментов. Рассмотрим файл readme.txt который образуется в результате выполнения слияния веток master и new в приведенном выше примере:
Мы можем открыть файл конфликтов с помощью программы WinMerge для разрешения конфликта.
После этого откроется средство двухстороннего слияния:
Исходя из описанной логики перепишем команду слияния merge_cmd следующим образом:
По сути, оба приведенных варианта эквивалентны.
2) Отредактируем .gitconfig
последняя строчка отменяет сохранение backup-файлов в директории репозитория.
3) Создадим конфликт при слиянии двух веток (см. пример с использованием DiffMerge).
Для разрешения конфликта при слиянии веток, воспользуемся командой
Advanced 2 and 3-way file comparison (diff), merging and folder synchronization
for Windows & macOS
Broad appeal, many uses
For legal and publishing professionals: instantly identify every change between different contract or manuscript drafts. Directly open and compare the text from Microsoft Office (Word and Excel), OpenDocument, PDF and RTF files. Copy text from other applications (such as Microsoft Word) and paste it directly into a text comparison.
For software engineers and web developers:compare, understand and combine different source file versions. Work quickly and accurately, whether you are comparing individual files or reconciling entire branches of source code. Use three-way comparison to integrate changes made by you, and those made by a colleague, with a common ancestor version. Synchronize a website with its staging area via FTP using the supplied FTP plugin†.
For release and quality control managers: compare different source code branches to give total confidence that you know and understand every change made to every file for a specific release. Compare product releases to be certain that only the expected files have been modified. Create an HTML or XML report of changes for audit purposes.
For code reviewers and auditors: identify in context every change made between two or three source code hierarchies. Create a standalone HTML or XML report of your findings. Add bookmarks and comments to a file or folder comparison, then save it as a single-file archive for emailing to other team members for review.
Other users: Whether you are working with multiple revisions of text files or need to keep multiple folder hierarchies in sync (for example, between a desktop and laptop machine), Merge could help save time and reduce errors by helping you to work quickly and accurately.
Learn more:
† FTP plugin only available on Windows.
Text comparison and merging
Merge enables you to compare and work with different revisions of text files, such as program source code, XML and HTML files. Merge can extract and compare the text from Microsoft Office, OpenDocument, PDF and RTF files. XML files can be shown with special formatting, helping you to see changes more clearly. It supports files with ASCII, MBCS and Unicode character encodings.
A colour-coded side-by-side comparison makes it easy to pinpoint at a glance similarities and differences between files. Linking lines are drawn between the documents showing clearly how they are related.
Point-and-click merging helps you choose the parts of each file that you would like to add to a final merged version by simply clicking buttons. The in-place editor with unlimited undo enables complete control over the merged file as you create it. The text comparison display dynamically updates as the merge progresses.
Merge shows detailed highlights of changes within lines. It can be configured to ignore differences in whitespace and line endings, as well as changes in lines matching specified regular expressions. The latter is useful for ignoring unimportant changes such as timestamps or expanded version control keywords.
Learn more:
Compare text from common office file formats
Extract and compare the text content from Microsoft Office, OpenDocument, PDF and RTF files. Copy text from other applications and paste directly into a text comparison. (Note that office document layout and formatting is not shown in text comparisons.)
Learn more:
Image and binary file comparison
Merge doesn’t just compare text files. Use image comparison to compare many different types of image file and instantly see which pixels have been modified. Binary comparison enables you to identify differences in data files at a byte level.
Learn more:
Three-way comparison and automatic merging
Merge Professional adds advanced three-way visual file comparison and merging to the Standard Edition’s two-way visual file comparison and merging. This is particularly useful when more than one person is working on the same set of files.
Automatic Merging enables swift reconciliation of even the largest files. Three-way file comparisons can be launched directly from a three-way folder comparison, allowing efficient integration of entire branches of source code.
Learn more:
Folder hierarchy comparison and synchronization
Merge supports folder hierarchy comparison and synchronization, enabling you to compare and merge entire directory trees. This is ideal for detecting changes in different versions of source code or web pages. You can even use the efficient byte-by-byte comparison option to verify the contents of recordable CDs or USB thumbsticks.
The Professional Edition of Merge supports three-way folder comparison (with automatic merging capability), enabling two revisions of a folder hierarchy to be merged with their common ancestor or some other folder hierarchy. This can be especially useful when used in conjunction with a source code control or software configuration management system.
Learn more:
† Archive support is only available on Windows.
Direct access to configuration management (version control) systems, Time Machine and FTP sites
As well as being able to compare files and folders on local drives and network shares, Merge comes with plugins for Git, Mercurial, Subversion and Perforce. In addition to providing read-only access to older versions of the files you are comparing, the plugins make it possible to perform a folder comparison of a local Perforce or Subversion client workspace against the repository. Alternatively, different branches (or the same branch at different points in time) within a repository can be directly compared. A similar plugin for AllChange† is available from Intasoft.
Merge integrates with local Time Machine‡ volumes, so you can open any earlier revision of a file or folder. Open the same file or folder in both the left and right comparison panes, then use the Versions button to compare a file or folder with another revision of itself.
An FTP plugin† gives Merge file and folder comparisons direct access to files located on an FTP server. It is therefore possible to use a folder comparison to synchronize a local copy of a website’s content with the main site itself, provided the main site is running an FTP server.
Learn more:
† AllChange and FTP plugins only available on Windows. ‡ Time Machine access only available on macOS.
Portable reports
File comparison reports can be created in HTML, HTML slideshow†, XML or UNIX diff format. HTML reports are particularly useful for archiving and distribution. Folder comparison reports can be created in HTML or XML format.
A folder comparison report can, optionally, include file comparison reports for some or all of the files involved in the folder comparison. Thus it is possible to generate a report that is a complete record of all the differences in all of the files involved in a folder comparison.
This is especially useful in code review and code audit situations, particularly as reports can be generated directly for files and folders in configuration management systems for which there is a Merge plugin.
Learn more:
† HTML slideshow reports only available on Windows.
Printing, automation and other advanced features
Other features include the ability to print a hard copy of file and folder comparisons, and to customize the behaviour and appearance of the application, including fonts, colours, and more.
A full Automation† or AppleScript‡ API and Command-Line Interface are included, allowing close integration with other applications (such as source/version control and software configuration management (SCM) systems) or your workflow.
Comprehensive online documentation is available from the Araxis website, including context-sensitive help for very dialog and dialog control.
Learn more:
† Automation API only available on Windows. ‡ AppleScript API only available on macOS.
One licence, two platforms
A single licence entitles you to use Merge on both Windows and macOS – even simultaneously, if you wish.
Merge licences are perpetual. You can keep using the product you have purchased forever. Each licence also includes one year of entitlement to support and all product updates. After the first year, support/update entitlement can be renewed for just pennies a day.
Araxis Merge
Информация
Описание
Сравнивайте изображения и двоичные файлы, синхронизируйте папки, выполните проверку и обзор кода, работайте с иерархиями папок, содержащих тысячи файлов. Это и многое другое вы сможете проделывать с помощью одной программы. Программа отлично подойдет для разработчиков веб-сайтов и программного обеспечения, позволяя сравнивать исходный код, веб-страниц, изучать и объединять различные версии исходных файлов.
Программное приложение имеет очень много фич, такие как:
Сравнение и синхронизация двух файлов
Сравнение и синхронизация трёх файлов одновременно
Сравнение бинарных данных
Сравнение и синхронизация двух директорий на диске
Сравнение и синхронизация трёх директорий на диске одновременно
Поддержка командной строки (можно использовать, например, в сочетании с StarTeam)
Поддержка COM Interoperability для программного управления приложением (можно использовать не работая с файлами)
Для юристов: немедленное определение каждого изменения, путем копирования текста с проектов контрактов, редактированных в другом приложении (таком как Microsоft Wоrd) и вставки его непосредственно в окно сравнения файла.
Для разработчиков программ и сайтов: сравнение, распознавание и объединение различных исходных версий файлов. Работайте быстро и точно, независимо от того, сравниваете вы индивидуальные файлы или согласовываете целые ветви исходного кода. Используйте трехстороннее сравнение для интегрирования сделанных вами изменений с изменениями, предложенными вашими коллегами. Синхронизируйте веб-сайт с областью постановки через FTP, используя дополнение FTP.
Для менеджеров по выпуску и контролю качества: сравнивайте различные ветви исходного кода, чтобы вы понимали и знали каждое изменения, сделанное в каждом файле для специфического выпуска. Сравнивайте выпуск продукции, чтобы конкретно убедиться в том, что только ожидаемые файлы были модифицированы. Создавайте отчеты об изменениях HTML или XML в целях аудита.
Для аудиторов, людей проверяющих коды: определите каждое изменение, сделанное между двумя или тремя исходными кодовыми деревьями. Создайте независимые отчеты HTML или XML о ваших результатах. Добавляйте закладки и комментарии к сравнению файла или папки, затем сохраняйте его как отдельный архив для отправки его членам команды с целью просмотра.
Araxis Merge Professional 2021.5618
Araxis Merge представляет собой профессиональное и очень сложное программное обеспечение, которое необходимо для выполнения глубокого анализа исходного кода приложений. В результате проведения этой технической операции человек сможете оценить состояние продукта, отыскать все возможные проблемы, и узнать о новых изменениях.
Больше всего данная утилита подойдет для профессиональных программистов или хакеров, обладающих высокими познаниями в сфере IT-технологий. Нередко даже целые компании используют эту программу, за счет возможности выполнения синхронизации между несколькими устройствами.
Пароль ко всем архивам: 1progs
Одна из самых сильных сторон этой утилиты – это максимальная простота и удобство при работе, который производится значительно легче и приятнее, в сравнении с альтернативными продуктами. Например, при сравнении исходного кода все новые изменения будут подсвечиваться, облегчая работу человеку.
Скачать бесплатно Araxis Merge вы можете у нас, перейдя по соответствующей ссылке, для загрузки установочного пакета.
Битая ссылка или обновилась версия программы? Напишите об этом в комментариях, обязательно обновим!
Аналоги программы
Похожие программы смотрите в наших подборках программ
Araxis Merge Pro. Профессиональное решение для сравнения файлов на Mac OS X
У пользователей, занимающихся на Маке действительно серьезной работой, а не только прослушиванием музыки, просмотром фильмов или играми, традиционной популярностью пользуются приложения, позволяющие сравнивать между собой несколько файлов. Подобные программы позволяют легко отслеживать изменения в двух текстовых файлах или кусках программного кода, относительно легко сравнить несколько изображений и пр., избавляя от утомительного ручного поиска изменений. Таких приложений выпущено достаточно и о некоторых мы уже рассказывали на страницах нашего сайта. Сегодня мы снова решили вернуться к теме сравнения файлов и рассказать о приложении Araxis Merge, разработанном одноименной компанией.
Araxis Merge — мультиплатформенное приложение, имеющее свои версии в системах Windows и Mac OS X. Версия для Windows нам, по понятным причинам, малоинтересна, поэтому поговорим о mac-версии программы.
Приложение распространяется в виде DMG-образа. Помимо самого приложения, в состав образа входят образцы AppleScript-скриптов, которые можно использовать в работе, образцы файлов для сравнения и несколько утилит, которые можно использовать вместе с приложением в режиме командной строки. На сайте разработчика можно найти подробную информацию о том, как устанавливать те или иные компоненты, входящие в дистрибутив программы.
Приложение Araxis Merge, традиционно для большинства mac-программ, имеет простой и понятный интерфейс, позволяющий даже без поддержки родного для пользователя языкапонять принцип работы приложения и порядок его использования. К слову сказать, русская, а ровно и какая-либо иная локализация, отличная от английской, в Araxis Merge отсутствует напрочь. Окно программы имеет аккуратный, без особых графических изысков, интерфейс, включающий два окна для сопоставления файлов и панель инструментов, которая расположилась вверху окна.
Araxis Merge — достаточно продвинутое приложение, которое умеет сравнивать между собой не только текстовые файлы. Можно выделить 4 основных режима работы программы: сравнение текстовых файлов, сравнение папок, сравнение изображений и, наконец, сравнение бинарных файлов (приложений). Для запуска каждого режима существут отдельные пункты в меню программы, как вариант, отдельные шорткаты и группа кнопок на панели инструментов. При запуске приложенияокно открывается в дефолтном режиме сравнения, который устанавливается в меню настроек.
Принцип работы довольно прост: в каждую из панелей добавляется по одному файлу, а затем по нескольким критериям сравнивается их содержимое. Например, текстовые файлы могут сравниваться друг с другом в режимах линия-линия, слово-слово, символ-символ. Добавление файлов осуществляется несколькими способами. Первый, и самый простой — перетаскиванием файлов на каждую из панелей окна приложения. Второй, традиционный не только для Windows, но и отчасти для Mac OS X — через меню программы (пункт File->Open File…). Там же находится еще один пункт меню, позволяющий открыть текстовый файл, используя более 100 различных кодировок.
Третий, наиболее удобный на наш взгляд, способ добавления файлов для сравнения — использование небольшого тулбара, расположенного вверху каждой панели. Этот способ удобен, прежде всего тем, что предлагает целых три варианта импорта файлов при минимуме движений мышкой по экрану. Смотрите сами: возможно добавление файлов не только через окно Finder, но и используя историю открытия файлов, причем журнал ведется раздельно для каждой из панелей. Наконец, нажав на кнопку Available Versions, можно открыть одну из предыдущих версий файла, если пользователь их уже не удалил.
Как же, можете сказать вы, в обзоре говорилось про две панели сравнения, а на скриншоте журнала открытых файлов отображены три панели? Все правильно, Araxis Merge действительно умеет сравнить не только два, но также и три файла одновременно. Для отображения третьей панели можно воспользоваться соответствующей кнопкой на панели инструментов (в виде римской цифры III). Для возвращения обратно в режим двух панелей следует воспользоваться кнопкой «II«. В работе, как правило, чаще всего сравниваются только два файла, а не три, и поэтому режим трех окон по умолчанию не используется.
СРАВНЕНИЕ ТЕКСТОВ
В процессе тестирования приложения мы загрузили в обе панели образцы тестовых файлов, которые шли в комплекте с приложением. Как видно на скриншоте, разные типы изменений отмечаются разными цветами. Так, например, если в одном из файлов пристутствует текстовый блок, отсутствующий в другом файле, то этот блок подсвечивается красным или зеленым цветом, причем линиями от одной панели к другой показывается место в тексте, где по мнению программы, должен был бы находиться этот отсутствующий абзац. Изменения не такие глобальные, а касающиеся отдельных слов или символов, также подсвечиваются отдельным цветом. А в самом низу экрана, на инфо-панели будет показана кодировка текстовых файлов, количество и характер найденных отличий, а также общее число строк и колонок в тексте.
Данное приложение неспроcта назвали Araxis Merge — оно умеет не только сравнивать, но объединять текстовые файлы между собой. Достаточно воспользоваться одной из двух кнопок, расположенных все на той же панели инструментов, как содержание левой панели будет записано поверх содержания правой, и наоборот, содержание правой заменит содержание левой. Еще одной характерной особенностью программы является возможность редактирования файлов «на месте», прямо в окне Araxis Merge. Хотим обратить ваше внимание на то, что если сравниваемые файлы имеют статус «для чтения», то заменить содержание одного файла другим или просто отредактировать его не получится. О наличии этого режима будет сигнализировать индикатор желтого цвета, расположенный в правой части мини-тулбара каждой из панедей.
СРАВНЕНИЕ ИЗОБРАЖЕНИЙ
Для тестирования данного режима работы приложения мы, также, использовали тестовые изображения из дистрибутива программы. На первом скриншоте видно, что при практически одинаковом содержании, изображения имеют определенные отличия.
Хорошо, если изображения имеют отличия в достаточно крупных деталях, которые можно сразу заметить, а если изменения будут касаться мелочей? Тут на на помощь приходят инструменты с нижней панели инструментов. Эти инструменты, в частности, позволяют скрыть/показать все одинаковые детали, скрыть/показать отличия, или, как вариант, подсветить отличия на обоих изображениях. Использование инструмента Swap позволит плавно совместить оба изображения, вплоть до того, что они станут идентичны друг другу или, как вариант, поменяются местами друг с другом. Ползунок Scale позволит плавно и одновременно увеличить оба изображения, чтобы иметь возможность рассмотреть мелкие детали.
В отличие от текстовых файлов, файлы изображений нельзя объединить друг с другом.
Как можно заметить на последнем скриншоте, Araxis Merge в своей работе использует систему вкладок, располагаю каждую новую пару или тройку стравниваемых файлов в отдельной вкладке, позволяя не захламлять Рабочий стол массой открытых окон.
СРАВНЕНИЕ ПАПОК
Цветовая индикация отличий в составе сравниваемых папок аналогична подобной в режиме сравнения текстовых файлов, и вряд ли ее стоит описывать еще раз. Зато нужно упомянуть о такой штуке, как возможность выделить несколько файлов в сравниваемых папках (выделение происходит строками) и одним кликом мыши запустить их сравнение друг с другом.
СРАВНЕНИЕ БИНАРНЫХ ФАЙЛОВ
Данный режим позволяет сравнивать любые файлы в десятичном или шестнадцатиричном режимах. Цветовая индикация аналогична предыдущим режимам. Тулбар, расположенный в самом низу окна, помимо отображения количества и характера найденных отличий, имеет ряд инструментов, позволяющих управлять отображением программного кода.
Результаты сравнения можно сохранить в файл, чтобы отправить другим пользователям, например тем, с которым пользователь работает вместе над одним проектом или, как вариант, для того, чтобы потом продолжить сравнение файлов.
Меню программы достаточно обширное — оно имеет в своем составе несколько разделов, по одному на каждый режим сравнения плюс еще один для общих настроек. Каждый раздел, в свою очередь, включает несколько вкладок. Мы сразу отметили возможность сохранять варианты собственных настроек пользователя, а потом подгружать их с помощью соответствующих кнопок.
В шести вкладках настраиваются все возможные ньюансы открытия, сравнения и редактирования текстовых файлов. Из числа прочих настроек хочет отметить настройку подсветки синтаксиса программного кода, написанного на многих языках программирования (C-like, Visual Basic, VBScript, Hypertext, XML, Caml, CSS, Erlang, Fortran, F77, Lisp, Perl, SQL, Smalltalk, Python, Ruby, Pascal, Generic, Autolt3)
Вкладка позволяет лишь настроить цвета подсветки изменений на сравниваемых изображениях.
В четырех вкладках настраиваются параметры сравнения бинарных файлов (цвета и шрифты для отображения изменений, типы файлов, опции отображения на экране и пр.)
В шести вкладках настройки сравнения папок и каталогов (тип сканирования, методы сравнения, цвета/шрифты и пр.). Отдельно хочется отметить возможность настройки специальных фильтров, которые можно использовать при сравнении папок.
Общие настройки приложения, для большего удобства расположенные в пяти вкладках. Среди всей массы настроек хочется отметить настройки использования резервных копий, сделанных Time Machine.
Как уже было сказано в начале статьи, Araxis Merge умеет работать с AppleScript, позволяя пользователю использовать в работе не только те скрипты, что идут в комплексте с приложением, но и свои собственные, а также поддерживает работу в командной строке. Для того чтобы реализовать эту возможность (или, как вариант, интегрировать Araxis Merge с некоторыми другими приложениями), пользователю будет необходимо установить приложения командной строки, также входящие в общий дистрибутив. Хотим отметить, что поддерживается интеграция не только с любым приложением из достаточно приличного списка (AccuRev, Dreamweaver, Eclipse, Git, Interface Builder, Mercurial, Perforce, SmartSVN/SmartCVS, Subclipse, Subversion, Surround SCM, svnX, Versions, xCode), но также и со штатным файловым менеджером Finder. Более подробно про установку приложений командной строки и интеграцию с другими приложениями можно почитать на сайте разработчика в разделе документации к данной программе.
Araxis Merge выпускается в двух редакциях: Standard и Professional Edition. Отличия между редакциями:
Подводя итог обзора Araxis Merge можно с уверенностью сказать что при всех своих достоинствах, а их немало у программы, приложение из-за своей убийственной для программ такого жанра стоимости можно порекомендовать только тем пользователям, которые профессионально занимаются созданием приложений для различных платформ. Для повседневного использования, дабы изредка сравнить несколько файлов или папок, лучше поискать другое решение, более доступное в плане стоимости. При создании данного обзора использовалась trial-версия Araxis Merge Professional Edition, которую свободно можно скачать с сайта разработчика, достаточно лишь указать адрес электронной почты, необходимый для получения триального ключа на 1 месяц.