Araxis Merge — Самая популярная программа для сравнения исходного кода, которая просто незаменима для программистов в IT компаниях в работе над большим проектом с участием десятков/сотен разработчиков: визуально показывает разницу в файлах и позволяет быстро и удобно синхронизировать их содержимое. Таким образом вы можете видеть какой код был добавлен, удалён или изменён. Это позволяет нескольким людям править один и тот-же файл с исходным кодом, а потом быcтро синхронизировать его для сохранения всех изменений, сделанных разработчиками.
Программное приложение имеет очень много фич, такие как:
• сравнение и синхронизация двух файлов
• сравнение и синхронизация трёх файлов одновременно
• сравнение текста
• сравнение бинарных данных
• сравнение картинок
• сравнение и синхронизация двух директорий на диске
• сравнение и синхронизация трёх директорий на диске одновременно
• поддержка командной строки (можно использовать, например, в сочетании с StarTeam)
GIT: Merge или Rebase? В чем разница?
• поддержка COM Interoperability для программного управления приложением (можно использовать не работая с файлами)
#
Скриншоты
Источник: g-f.su
Обзор инструментов для визуального сравнения и разрешения конфликтов слияния
На хабре уже было много статей о распределенных системах управления версиями (DVCS), их сравнений, а также сравнений GUI-клиентов для них. Также были обсуждения плагинов к IDE для работы с git и mercurial. Но практически не было информации об инструментах визуального сравнения и разрешения конфликтов слияния.
Недавно я «перескочил» с mercurial (который до сих пор считаю более удобным и логичным) на git, потому что, подавляющее большинство проектов, которые мне интересны, используют git и хостятся на github. В связи с этим, встал вопрос о пересмотре арсенала инструментов, в частности вопрос выбора инструмента визуального сравнения и слияния (diff and merge). Дабы восполнить недостаток информации на хабре, я решил написать этот мини-обзор. Как говориться — по горячим следам.
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
1) Добавим в директорию c:/Git/libexec/git-core/mergetools/
7.1 Git – Слияние – «Истинное» слияние и разрешение конфликтов в git merge
файл diffmerge следующего содержания:
diff_cmd () < «c:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe» «$LOCAL» «$REMOTE» >/dev/null 2> merge_cmd () < «c:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe» —merge —result=»$MERGED» «$LOCAL» «$BASE» «$REMOTE» >/dev/null 2>
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 // посмотрим на дерево
git difftool master new // сравним две ветви
git merge new // сольем изменения в new с веткой master
Выводится сообщение о конфликте слияния, чего мы и добивались.
git mergetool // разрешим этот конфликт
В среднем окне, приведем файл к требуемому состоянию и сохраним изменения.
Конфликт разрешен.
Настройку 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> merge_cmd () < «c:/Program Files (x86)/WinMerge/WinMergeU.exe» «$PWD/$LOCAL» «$PWD/$REMOTE» «$PWD/$MERGED» >/dev/null 2>
Когда Git не может автоматически объединить изменения, происходит конфликт слияния и в конфликтующий файл добавляются маркеры слияния (>>>>>>). Они необходимы для разрешения конфликта с помощью сторонних инструментов.
Рассмотрим файл readme.txt который образуется в результате выполнения слияния веток master и new в приведенном выше примере:
Araxis Merge
Araxis Merge — программа, разработанная, чтобы помочь пользователям визуально сравнивать, синхронизировать и объединять текстовые файлы и папки.
О программе
Программа позволяет сравнивать текст и содержимое папок, выделяя отличия цветом, что позволяет очень легко заметить различия. Более того, она рисует связующие линии между открытыми документами, наглядно показывая, как они связаны. С ее помощью можно сравнить до 3х файлов или папок. Araxis Merge работает с такими форматами файлов как XML и HTML, с исходным кодом разных языков программирования, и файлами, содержащими символы в ASCII, MBCS или Unicode кодировке.
Это мощная и удобная программа для Windows, с помощью которой можно сравнить несколько текстовых документов или папок, и выявить их различия. К сожалению эта программа распространяется не бесплатно, но у нее есть бесплатный пробный период.
Источник: freesoft.ru