Как сравнить два dll файла

Обновлено: 07.07.2024

Синхронизация данных требует от программистов, системных администраторов и времени, и соответствующих навыков. Однако не менее важен правильно подобранный инструментарий. Контроль версий, работа с проектами, резервное копирование, слияние и визуальное сравнение файлов — далеко не полный список задач, так или иначе связанных с синхронизацией.

В путеводитель вошли 10 программ, которые можно назвать во многом универсальными: они не привязаны к определенному сервису или приложению, позволяют выполнять вышеназванные (и менее специализированные) задачи не только через графический интерфейс, но и в режиме командной строки.

Критерии сравнения выглядят следующим образом:

  • Интерфейс: поддержка режимов отображения, сохранение сессий, возможности настройки панели инструментов, колонок
  • Функциональность текстового редактора, работа с исходным кодом
  • Методы слияния и синхронизации, возможность трехстороннего сравнения
  • Экспорт отчетов, создание патчей (diff)
  • Дополнительные функции: интеграция со сторонними приложениями, поддержка расширений, протоколов и др.

SmartSynchronize

SmartSynchronize — кроссплатформенная программа для сравнения данных, структуры директорий и их содержимого. Фактически, программа бесплатна для некоммерческого использования, тем не менее, однопользовательская лицензия стоит 39 USD.

Режимы сравнения представлены в приветственном окне программы. Помимо диалога выбора файлов, здесь возможен просмотр истории и выбор сохраненного профиля. Также в настройках (Preferences) настраиваются фильтры: файловые — для отсеивания файлов по названию и расширению, и фильтры директорий — позволяют составить список исключений.

Для сравнения файлов используется двухпанельный режим side-by-side с синхронной прокруткой содержимого обеих панелей. Условных обозначений в SmartSynchronize немного, но, благодаря соединительным линиям (linking lines), операции сравнения и слияния очень интуитивны. SmartSynchronize указывает, куда и в каком направлении будет добавлен участок из одного файла в другой. Вставка текста производится одним кликом, позволяя обойтись без контекстного меню.

Кодировку и синтаксис документа можно определить вручную, предусмотрена подсветка синтаксиса для многих языков программирования и разметки, нумерация строк и другие редакторские функции, присущие интегрированным средам разработки IDE.

В целом, SmartSynchronize гибко настраивается, но все настройки распределены по разным разделам меню, что требует некоторого привыкания. Не хватает режимов отображения, настроек панели инструментов.

В режиме сравнения директорий выводится список файлов и статус для каждого из них, в нижней части окна доступен предосмотр. Метод сравнения — по содержимому или только по размеру и времени — определяется в настройках Edit → Preferences. Количество информационных колонок (тип файла, дата) нельзя увеличить, хотя отключить имеющиеся можно.

В SmartSynchronize реализовано как одностороннее объединение данных с левой или правой сторонами, так и обычная синхронизация. Конфигурацию можно сохранить для последующей загрузки, сделав снимок файловой структуры. Как поясняют разработчики, программа не распознает атрибуты файлов, поэтому использовать ее в качестве утилиты для резервирования нет смысла. Работа с архивами также не предусмотрена, равно как и с удаленными каталогами.

Помимо вышеупомянутых, имеется дополнительный, трехсторонний метод слияния — 3-Way-Merge, который позволяет объединить различия между несколькими версиями файлов, причем каждый из трех документов можно редактировать независимо друг от друга.

Функции сравнения, несомненно, востребованы программистами при контроле версий. Поэтому в заключение стоит сослаться на альтернативное решение этой же компании — SmartCVS. Программа представляет собой CVS-клиент с интегрированным инструментарием SmartSynchronize.

Резюме. SmartSynchronize предлагает неплохой инструментарий для работы с файлами и директориями, местами не поддающийся настройке и не выходящий за рамки базовых возможностей.

[+] Трехстороннее слияние
[+] Удобный текстовый редактор
[−] Отсутствие документации
[−] Невозможность синхронизации удаленных каталогов и архивов

WinMerge

WinMerge — программа для сравнения и объединения файлов и каталогов в ОС Windows. Ее можно использовать как отдельный инструмент либо в связке с проектами. В WinMerge встроен текстовый редактор с поддержкой языков программирования, подсветкой и нумерацией строк.

Имеется два режима работы с данными, объединенных в диалог выбора файлов и папок. При сравнении доступны фильтры двух типов: фильтры файлов и строковые. Это позволяет использовать различные надстройки и оперировать регулярными выражениями, отсеивая необходимые типы данных при сравнении.

В режиме сравнения файлов в окне отображаются оба файла, в левой и правой части. Для удобной навигации по содержимому предусмотрена карта («Местоположения»). Строки, которые имеют различия, отмечены цветом, также с ними можно ознакомиться в панели «Отличия». Основные операции слияния доступны в разделе «Объединение».

Отдельного внимания заслуживает функциональность текстового редактора. Внешний вид поддается модификации. Помимо подсветки синтаксиса и нумерации строк, предусмотрена работа со скриптами, а расширение функциональности возможно за счет дополнений. Дополнения относятся к распаковщику, представлению и редактору скриптов.

При сравнении каталогов результаты выводятся табулированным списком. В нем содержатся сведения о названии файла (каталога), его расположении, результат сравнения, дата, расширение и другая информация. Настроить отображение можно с помощью колонок. При необходимости можно активировать рекурсивный режим или переключиться в представление в виде дерева для удобной навигации.

WinMerge позволяет выполнять одни и те же задачи разными способами — в том числе, с помощью перетаскивания или через контекстное меню Проводника. Можно создавать проекты для быстрого доступа к данным и настройкам. WinMerge работает в режиме командной строки, также программу можно использовать в связке с системами контроля версий (TortoiseSVN, Visual Studio, Rational ClearCase и т. п.).

Резюме. WinMerge — программа, в первую очередь, с уклоном на работу с проектами. Интеграция с SVN, функциональный редактор, фильтры и расширения — все это отлично дополняет базовые возможности при сравнении данных.

[+] Поддержка расширений
[+] Функциональный редактор
[+] Интеграция со сторонними приложениями
[−] Нет трехстороннего сравнения

Meld — кроссплатформенная программа (OS X, Linux, Windows) для синхронизации файлов и директорий. С ее помощью осуществляется как двух-, так и трехстороннее сравнение. Прежде всего, инструментарий Meld будет полезен разработчикам, так как возможна интеграция с системами управления версиями: Git, Bazaar, Mercurial, Subversion и прочими.

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

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

Разработчикам будет интересен третий режим работы приложения — Version Control View. Meld поддерживает интерфейс командной строки, поэтому предусмотрена интеграция со средами Git, Bazaar, Mercurial, Subversion и многим другими.

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

[+] Трехстороннее сравнение
[+] Поддержка систем контроля версий
[−] Медленная и нестабильная работа в Windows
[−] Неудобный и неинформативный интерфейс

Diffuse

Diffuse —кроссплатформенный продукт для ОС Windows, OS X, Linux и BSD, по интерфейсу напоминающий Meld (в основе — библиотека PyGTK), но имеющий функциональные отличия. Заявлена интеграция с Bazaar, CVS, Darcs, Git, Mercurial, Monotone, RCS, Subversion и другими средами.

Продолжая сравнение с Meld: Diffuse характеризуется стабильностью, здесь нет внезапных зависаний. Доступна подробная документация, интерфейс переведен на русский язык. Однако сравнение директорий не входит в инструментарий, в программу заложены только функции сравнения файлов и их редактирования. В Diffuse можно обнаружить несколько режимов слияния: — двух-, трех- и многостороннее. Таким образом, источников сравнения может быть сколько угодно, вопрос лишь в быстродействии и удобстве. Касательно второго аспекта можно лишь сказать, что сессий здесь нет — соответственно, работа с большими проектами в Diffuse под вопросом.

Различия отмечаются цветом, сводка (Comparison Summary) доступна возле полосы прокрутки, для навигации по списку изменений предназначены кнопки на панели управления. Нумерация строк и подсветка синтаксиса с возможностью ручного переключения включены по умолчанию. В отличие от других подобных редакторов, в Diffuse нельзя сразу выделить произвольный участок текста, для этого необходимо дважды кликнуть по содержимому. В ином случае можно выделять текст и производить другие действия только построчно.

Очевидно, что в Diffuse перелинковки различий между файлами нет, поэтому слияние строк осуществляется менее интуитивным методом. Все доступные команды собраны в разделе «Слияние», куда нужно обращаться каждый раз за неимением команд в контекстном меню. В SmartSynchronize или других упомянутых решениях многие операции производятся в один клик.

Работа с системами управления версиями возможна посредством командной строки, перечень команд с описанием изложен в справке.

Резюме. Функциональность такого рода востребована при слиянии нескольких текстовых документов. Программа лишена недостатков, присущих ближайшему аналогу Diffuse — Meld. Но, к сожалению, сравнение директорий и отчетность остались за бортом.

[+] Удобная работа со строками
[+] Интеграция с CVS
[+] Многооконное слияние
[−] Отсутствие сессий
[−] Маркировка изменений не интуитивна

Perforce P4 Merge

P4Merge нечасто упоминается среди других бесплатных продуктов (например, по сравнению с WinMerge). К тому же отыскать эту программу среди других компонентов комплекса Perforce непросто. Perforce — это коммерческая кроссплатформенная система управления версиями, обладающая широкой сферой применения, не в последнюю очередь за счет плагинов и интеграции с различными продуктами (IntelliJ IDEA, Autodesk 3D Studio Max, Maya, Adobe Photoshop, Microsoft Office, Eclipse, emacs и др.). Впрочем, P4 Merge может работать автономно от сервера Perforce, достаточно скачать программу с сайта разработчика для ее бесплатного использования.

Основные операции — это сравнение файлов (Diff) и слияние (Merge). Редактор документов предельно прост: есть нумерация, но нет подсветки синтаксиса. Редактировать файлы в двух панелях «на лету» нельзя, нужно выбрать одну из панелей, включить режим редактирования и затем сохранить изменения. Различия маркируются, для перехода между ними предназначены кнопки навигации. Ориентироваться по изменениям проще всего с помощью соединительных линий. В целом, интерфейс P4 Merge недостаточно удобен: в нем нет сводки по различиям, статистика по изменениям представлена суммарной цифрой, без детализации, для просмотра изменений нужно использовать ручное обновление.

Перечисляя другие особенности программы, стоит упомянуть сравнение изображений. В данном режиме обнаружились две полезные функции: подсветка различий и слияние двух файлов в один. При этом непонятно, почему меню редактора содержит невостребованные команды, такие как смена кодировки, методы сравнения и прочие, которые относятся к сравнению текстовых файлов, но никак не изображений.

Резюме. Конечно, в P4 Merge множество функциональных ограничений, особенно если сравнивать с платными продуктами. Приложение можно рассматривать сугубо как дополнение к серверу Perforce. Возможно, в поисках нужного инструментария следует обратить внимание и на другие компоненты, доступные на сайте разработчика.

[+] Диаграмма слияния в режиме Merge
[−] Слабая функциональность
[−] Невозможность редактирования на лету
[−] Отсутствие команд слияния

tinkoff кредитка

Друзья, рад вас приветствовать на страницах моего блога. Сегодня хочу рассказать вам о 4 способах сравнения файлов по содержимому. Необходимость найти различия возникает довольно часто. Приходится делать сравнение файлов по типу или размеру. Сравнение файлов в Word и Excel тоже весьма распространённая процедура в офисах и конторах, где постоянно приходится работать с текстовыми документами и таблицами.

Но для веб-мастера или владельца сайта часто бывает необходимо сравнить два файла по содержимому. И речь идёт не о текстовых файлах, хотя и они тоже анализируются так же, а о форматах .html, .css, .php и так далее. Тех файлах, где нужно найти изменения в коде. И порой изменение одного лишь знака может обеспечить уйму трудностей с достижением результата.

И, вообще, работая с файлами сайта, достаточно часто приходиться анализировать код. Делать это вручную нереально. Куда проще воспользоваться подручными средствами, инструментами, которые должны быть у каждого веб-мастера и владельца сайта.

Способ 1. Сравнение файлов в программе Total Commander.

Ранее я рассказывал, как настроить ftp-соединение через TC, которое позволяет легко управлять файлами сайта и осуществлять все необходимые операции прямо с компьютера, минуя личный кабинет хостинга. Только из-за одной этой возможности уже стоит использовать эту программу.

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

Итак, запускаете Total Commander – в одной из панелей выбираете первый файл для сравнения – во второй панели открываете папку со вторым файлом.

Выбор файлов для сравнения

Сравнить по содержимому

Откроется новое окно, также разделённое на две панели. В самом верху, в каждой панели будет срока для выбора файла. В одной из них первый файл будет уже выбран (но может быть и пустым). Для выбора файла нужно нажать на небольшую кнопочку со стрелочками (>>).

Выбор файла для сравнения

Выбрав файлы для сравнения, нажимаете на кнопку «Сравнить». В каждой панели появится содержимое выбранного файла. Отличия будут отмечены фоновым цветом.

Результат сравнения в Total Commander

Для внесения изменений в файл достаточно нажать на кнопку «Редактировать». И можно приступать к внесению изменений. Также здесь будут доступны функции копирования и отката, поиска и изменение кодировки.

Редактирование в Total Commander

Если вы внесли изменения в файл, то после закрытия окна сравнения, будет предложено сохранить результат.

Способ 2. Сравнение файлов в Notepad++.

Эта прекрасная программа, которая к неисчислимым её достоинствам позволяет ещё и файлы сравнивать по их содержимому.

Но для этого потребуется установить небольшой плагин. Делается всё это непосредственно внутри самого редактора.

Выбор плагина

В новом окне выбираете плагин «Compare» и жмёте кнопку «Install».

Установка плагина

Сравнение файлов в Notepad++

Результат сравнения файлов будет представлен в отдельных панелях. То есть в левой будет первый файл, а в правой второй. Напротив строк, в которых найдены отличия будет предупреждающий знак и подсветка фоновым цветом.

Строка, где найдены малые отличия, будет подсвечиваться жёлтым цветом, и обозначена восклицательным знаком.

Строка, которая полностью отличается, будет отмечена на одной панели красным минусом на другой зелёным плюсом. И подсвечена соответствующим цветом.

Результат сравнения в Notepad++

Разумеется, найдя отличие, вы сразу можете внести необходимые поправки и сохранить изменения.

Завершить сравнение файлов можно комбинацией клавиш Ctrl+Alt+D.

Способ 3. Сравнение содержимого двух файлов в программе WinMerge.

Установка программы стандартная и не составит труда. Поэтому на этом останавливаться не будем, а сразу перейдём к процессу сравнения двух файлов.

Открыть файлы в WinMerge

Далее, выбираете файлы для сравнения. Для этого нажимаете на кнопку «Обзор» и выбираете файл. Выбрав файлы, нажимаете на кнопку «ОК».

Выбор файлов в WinMerge

Результат сравнения представлен в двух панелях, так же как и в других примерах. Только здесь ещё и выделяется именно тот фрагмент кода, который отличается в конкретной строке.

Результат сравнения в WinMerge

В этой программе можно также редактировать файлы. А когда будете закрывать окно сравнения, программа предложит сохранить изменения в файлах.

Способ 4. Сравнение файлов с помощью командной строки Windows.

Этот способ позволяет сравнивать содержимое файлов без сторонних программ. Достаточно воспользоваться стандартным инструментом операционной системы Windows.

Также этот способ не позволяет редактировать файлы. Для этого нужно использовать другие инструменты. Но, тем не менее с поставленной задачей вы справитесь без дополнительных программ.

выглядит это так:

Готовый результат будет выглядеть так:

Результат сравнения через командную строку

Итак, о способах сравнения файлов я вам рассказал, а теперь предлагаю посмотреть видеоурок в, котором я показываю сравнение двух файлов всеми способами.

Уверен, теперь если вам необходимо будет сравнить файлы, то вы легко сможете это сделать, использую один из предложенных способов.

На этом сегодня всё, всем желаю успехов и хорошего настроения и до встречи в новых статьях и видеоуроках!

С уважением, Максим Зайцев.

Похожие статьи по теме:

Друзья, поддержите блог! Поделитесь статьёй в социальных сетях:

Подписывайтесь на новые статьи!

Оставьте комментарий Отменить ответ

40 коммент. к статье “ 4 способа сравнить два файла по содержимому ”

Паша, привет. Спасибо за дополнение, мне не приходилось работать с Meld. Согласен, последний способ ну уж на самый крайний случай 😉 Хотя, раньше, в DOS приходилось именно им пользоваться.

Полезная информация. Я сам до недавнего времени, вообще вручную искал все отличия. Потом установил плагин в Notepad++, стало намного легче.
Про WinMerge, в свое время, хотел даже статью написать. Я не догадался ее использовать для сравнения файлов сайта.

В ручную искать отличия очень сложно. Особенно если файлы объёмные. Впервые эту фишку, ещё в школе, показал нам учитель информатики. Тогда это было в DOSe. Это как раз тот самый 4 способ. Тогда это было очень круто.
Сам я сейчас использую первые три способа, в зависимости от компьютера на котором работаю. Просто не на всех компьютерах установлены одинаковые программы.

Да, действительно очень удобно. Нужно взять на вооружение. Спасибо! 🙂

СПАСИБО!
Очень полезная штучка!
Может пригодится!

Пожалуйста! Инструменты полезные и всегда найдут своё применение.

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

Здравствуйте, Андрей. Честно говоря, никогда не приходилось сравнивать графику и музыку по содержимому. Но, в голову приходят лишь Photoshop для графики и Total Commander для сравнения по размеру и дате создания или изменения. Изначально можно выяснить разницу в размере или дате, а уже после просмотреть или прослушать файлы и найти отличия.

Привет, Максим! Вот, сегодня очень понадобилась эта статья, когда сравнивала свой бывший файл functions.php с тем, который вы мне прислали. Анализировала правки. Для сравнения воспользовалась Notepad++.

Перед сравнением содержимого можно просто узнать хэш. Если он одинаковый, то. файлы идентичны. Если хэш разный, тогда уже нужно искать различия в файлах.

Капитан очевидность поражает простотой подхода. То есть, чтобы взять яйцо с полки, нужно сначала увидеть его вид с левого боку, а затем убедиться, что оно как-то не так выглядет с правого боку, а только потом, немного подумав, протянуть руку и взять его, чтобы убедиться, что это на самом деле яйцо.

Не проще ли сразу сделать сравнение файлов, тут же увидеть количество различий. А уж потом, если так интересно, можно и посчитать хэш )))

Пример про яйцо вообще, как бы мягко сказать, неподходящий. Если мы имеем много файлов, то при сравнении хэша, а это делается элементарно, быстро вычислим те файлы, содержимое которых нужно сравнить. Откуда вы знаете, что изменения есть во всех файлах? Рациональнее сначала выявить нужные файлы, а затем сравнить их содержимое, чем сравнивать все файлы подряд, выполняя много ненужной работы.

@Василий
А если все файлы не совсем одинаковые, как обычно бывает. Ведь не будете же держать один и тот же файл в 10-ти экземплярах, а потом копаться и вычислять хешем, какой же один из них правленный, а какие все остальные идентичные )))

Ненуяпонимаю, когда скачал файл из инета, тогда конечно можно проверить его на хэш, но для того, чтобы определить, не побился ли он при закачке или не подменил ли кто оригинал и не подсунул ли самопал.

Не копался в исходниках этой чудо-программы (Araxis Merge), но процентов на 99 уверен, что, если она оптимизирована, то перед сравнением, таки, вычисляет какую-либо контрольную сумму, чтобы выявить отличающиеся файлы.

Да, именно, цель статьи ознакомить читателей с доступными способом сравнения файлов по содержимому. И я считаю, что цель достигнута. Выделить лучшую или бесплатную программу я не собирался.

Ну да ладно, не буду спорить. Однако считаю ваши доводы не состоятельными. Допустим, если писать обзор графических программ, то стопудово уверен, что без упоминания Фотошопа будет как-то некорректно. И всегда можно нагуглить программу, отученную от жадности ;), тем более, что есть русифицированная версия из коробочки, не требующая ни копеечки. Ну это для тех, кому религия позволяет, отблагодарить автора можно и в другой жизни )))

Вообщем, я вас оповестил и просве(я)тил. Плохо это или хорошо, решайте сами.

Инструментов действительно много. И каждый сам решает, какой выбрать для работы. И будет ли это платный, ломаный или бесплатный продукт тоже решает каждый сам. Спасибо за дополнение статьи.

Доброго времени суток! Респект автору за инструкции! Но, на мой взгляд, представленные 4 способа пригодны только для сравнения данных, но не для работы с ними. Так, в Тоталкоммандере сравнил два текстовых файла с последовательностями буквенных символов (написаны в строку без пробелов). Он подсветил отличия. Мне необходимо вырезать подсвеченное/неподсвеченное и объединить. Как это можно осуществить? Заранее благодарю.

Михаил, добрый вечер. В том же коммандере перейдите в режим редактирования и делайте, то что вам нужно. Вырезайте и объединяйте. В видео я показываю эти моменты.

Татьяна, добрый вечер. Попробуйте переустановить редактор, а затем заново установить плагин.

Compare от Borland лучше всех. Удобнее и как-то прям приятно и быстро в нём работать.

Каждый выбирает удобный для себя инструмент. Мне Notepa++ хватает для моих задач.

На хабре уже было много статей о распределенных системах управления версиями (DVCS), их сравнений, а также сравнений GUI-клиентов для них. Также были обсуждения плагинов к IDE для работы с git и mercurial. Но практически не было информации об инструментах визуального сравнения и разрешения конфликтов слияния.

diff and merge


Недавно я «перескочил» с mercurial (который до сих пор считаю более удобным и логичным) на git, потому что, подавляющее большинство проектов, которые мне интересны, используют git и хостятся на github. В связи с этим, встал вопрос о пересмотре арсенала инструментов, в частности вопрос выбора инструмента визуального сравнения и слияния (diff and merge). Дабы восполнить недостаток информации на хабре, я решил написать этот мини-обзор. Как говориться — по горячим следам.

KDiff3

  • бесплатен;
  • поддерживает трехстороннее слияние;
  • умеет сравнивать директории;
  • с различными кодировками работает нормально;
  • без дополнений не подсвечивает синтаксис.

DiffMerge

  • бесплатен;
  • поддерживает трехстороннее слияние;
  • умеет сравнивать директории.
  • бывают проблемы при работе с кириллицей. Думаю, со временем, исправят.
  • DiffMerge по умолчанию, не поддерживает подсветку синтаксиса языков программирования.

WinMerge

  • Open Source;
  • никаких проблем с кодировками;
  • подсветка синтаксиса без лишних телодвижений;
  • сравнение директорий.
  • инструмент слияния является двусторонним, что может создавать неудобства в некоторых случаях;
  • Windows only.
  • 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

  • трехстороннее слияние;
  • нет проблем с кодировками;
  • подсвечивает синтаксис;
  • помимо файлов, может сравнивать директории и синхронизировать их;
  • хорошо работает на сравнении больших файлов (гигабайты) и больших директорий;
  • генерация отчётов по результатам сравнения. (если это можно назвать плюсом).
  • ShareWare;
  • нет версии под Linux.

Git и DiffMerge

1) Добавим в директорию c:/Git/libexec/git-core/mergetools/
файл diffmerge следующего содержания:


2) Теперь добавим в файл c:/Users/swipe/.gitconfig
следующие строки:


3) Создадим конфликт и вызовем DiffMerge для его разрешения


tree


diff


conflict


merge

Git и WinMerge

1) Добавим в директорию c:/Git/libexec/git-core/mergetools/
файл winmerge следующего содержания:


Когда Git не может автоматически объединить изменения, происходит конфликт слияния и в конфликтующий файл добавляются маркеры слияния (<<<<<<<, =======, и >>>>>>>). Они необходимы для разрешения конфликта с помощью сторонних инструментов.
Рассмотрим файл readme.txt который образуется в результате выполнения слияния веток master и new в приведенном выше примере:


Мы можем открыть файл конфликтов с помощью программы WinMerge для разрешения конфликта.

open

После этого откроется средство двухстороннего слияния:

winmerge

Исходя из описанной логики перепишем команду слияния merge_cmd следующим образом:

По сути, оба приведенных варианта эквивалентны.

2) Отредактируем .gitconfig

последняя строчка отменяет сохранение backup-файлов в директории репозитория.

3) Создадим конфликт при слиянии двух веток (см. пример с использованием DiffMerge).

Я хотел бы сравнить несколько dll одной установки с несколькими dll другой установки приложения, с которым я работаю. Мне нужно убедиться, что они точно такие же. Как сравнить две библиотеки DLL, чтобы убедиться, что у них одинаковые методы, свойства, версия и т. Д.?

задан 23 июля '10, 03:07

4 ответы

Я предполагаю, что вы не можете полагаться на управление версиями сборки, чтобы ответить на этот вопрос.

Быстрый поиск по Google поднял этот пост Скотт Хансельман это указывает на несколько инструментов, которые могут решить вашу проблему.

Создан 23 июля '10, 07:07

Номер серийного номера сборки не содержит косвенно информации ABI: - / - user166390

Да, я понимаю, что тот факт, что OP необходимо сравнить две сборки вместе, указывает на то, что у них есть некоторые проблемы с управлением версиями. - Кен Хендерсон

Да, управление версиями сборок никогда не обновлялось для двух выпусков, поэтому я пытаюсь помочь некоторым клиентам узнать, на какой версии они работают. - Эрик

Плагин Скотта Хансельмана для отражателя dotnet полезен, но не настолько автоматизирован, как я надеялся :) - Эрик

я использую WinMerge все время делать эту задачу. Вы даже можете сравнивать целые каталоги. Это, конечно, если вам просто нужно знать, одинаковы ли они, поскольку он не покажет вам никакого кода.

Создан 23 июля '10, 07:07

Почему бы не использовать Dependency Walker? Скопируйте все экспортированные функции в текстовый файл. Повторите то же самое с другой DLL. Затем сравните два текстовых файла.

Создан 23 июля '10, 07:07

Редактировать: Для подсказок непрограммного определения см. Ответ confusedGeeks :-)

Тогда я бы использовал сборку SN для определения «версии»;

Если ABI не отражен в версии, выполните вторичную md5sum для файлов или выполните рефлексивное сравнение двух сборок. Конечно, md5sum "уловит" внутренние изменения / изменения компиляции, даже если ABI не изменился. Отражение ABI, хотя и более сложное и потенциально медленное, может точно определить изменения ABI.

Самым простым и достаточным может быть просто «перезаписать» любую сборку той же версией (и оставить предыдущие / более поздние версии до тех пор, пока кто-нибудь их не удалил).

Создан 23 июля '10, 07:07

Достаточно ли md5sum, чтобы подтвердить, что они одинаковы? Поскольку я сравниваю версионную сборку со сборкой, у которой нет штампа версии . разве это не изменит md5sum между ними? - Эрик

@Eric Если вас не беспокоят очень, очень умные хакеры NIHM, пытающиеся украсть ваш сыр, md5sum можно использовать надежно: разные суммы md5 -> различное содержимое файла. - user166390

Я делаю обзор кода веб-проекта и хочу убедиться, что у меня есть все скомпилированные dll. Мне предоставили только три файла .dll для статического анализа, но интересно, не пропущу ли я их, потому что, когда я посмотрел на фактическую базу кода и проект, она содержала 20 различных файлов .cs. Все.

У меня есть 10 больших файлов XML, и некоторые файлы отличаются от других (они представляют данные на одном шаге процесса). Как их сравнить AUTOMATICALLY ? Я знаю, что могу сравнить их вручную, используя такие инструменты, как WinMerge или eyes, но мне не нравится такой подход. Я бы хотел, чтобы.

Почему вы помещаете библиотеки DLL, которые вы строите в svn?

Вы должны придумать лучший способ сделать это - например, иметь установщик или сервер ftp где-нибудь, где разработчики могут получить ваш DLLs. Это действительно плохая идея - помещать ваши производные работы в svn. Очень плохо.

Это OK для проверки двоичных файлов в subversion. Причина этого заключается в том, что у нижестоящего пользователя (QA или пользователя) может не быть среды для сборки из исходного кода. Они также не заинтересованы в создании из исходного кода.

Проблема здесь заключается в управлении зданием - когда вы выпускаете этот DLL и как вы отслеживаете источник, если QA обнаруживает проблему с вашим DLL.

Timestamp не является надежным методом.

Для этого вам нужно иметь что-то в управлении зданием. В моем проекте наш сценарий построения определяет максимальный номер версии задействованных файлов (обратите внимание, что это не текущий номер версии, так как вы должны иметь возможность строить в будущем, но давать те же результаты). Затем он помечает этот номер в ресурсе версии DLL. После того, как мы удовлетворены результатом, мы выпускаем его, вручную копируя двоичный файл в папку в subversion и регистрируемся.

Если QA обнаружит ошибку, мы всегда можем вернуться в состояние, в котором был создан DLL (посмотрев номер версии), и найти, в чем проблема.

Попробуйте все равно зафиксировать и посмотреть, согласуется ли SVN с вашим графическим интерфейсом.

Если он все равно попытается зафиксировать, то все, что создает файл, на самом деле каждый раз включает в себя какую-то другую информацию (возможно, отметку времени или что-то в этом роде). Возможно, вы захотите на самом деле зафиксировать, так как этот файл отличается. Вы можете проверить параметры компиляции, чтобы увидеть, включает ли она какую-то отметку времени, но если вы не можете найти такую опцию, будет трудно определить, являются ли изменения в dll значимыми или просто некоторые метаданные компилятора.

Самый быстрый и простой способ-это статистика обоих файлов и сравнение времени их изменения-скопируйте файл только в том случае, если DLL в целевом каталоге старше, чем тот, который вы копируете.

Более надежный, но более медленный способ-использовать любое количество программ diff для сравнения двух DLLs byte-for-byte.

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

Правка: В ответе Тиму вы пояснили, что делаете это, чтобы избавить других разработчиков от проблем с построением. Это неправильный способ сделать это. Система управления версиями не должна использоваться для хранения двоичных файлов, которые являются выходными данными источника. Вместо этого вы должны:

Я хотел бы сравнить несколько библиотек DLL одной установки с несколькими библиотеками DLL другой установки приложения, с которым я работаю. Мне нужно убедиться, что они точно такие же. Как сравнить две библиотеки DLL, чтобы убедиться, что они имеют точно такие же методы, свойства, версию и т. д.

У меня есть две папки с огромным количеством файлов HTML, и я хочу сравнить каждый файл и как получить diff каждого файла с помощью команд shell script/unix. Пример: Каталог 1: 1.html 2.html 3.html Каталог 2: 1.html 2.html 3.html.. Я хочу сравнить 1.html в каталоге с 1.html в dir2 , а 2.html с.

SVN уже должен позаботиться об этом за вас. Если между файлами действительно нет различий и вы заменяете один на другой, SVN не будет считать файл "modified,", даже если у него есть новый timestamp. SVN хранит базовую версию файла и использует сам diff, чтобы увидеть, какие файлы необходимо зафиксировать. Так что вы всегда можете просто скопировать dll, а SVN позаботится о rest.

Похожие вопросы:

Мы использовали продукт от поставщика, предоставленный нам в форме dll. Теперь мы берем на себя исходный код продукта этого поставщика. Наше основное приложение зависит от тех поставщиков, которые.

У меня есть программа, которая загружает каждый модуль в процесс и сравнивает их с базой данных запрещенных файлов DLL, которая работает просто отлично, но ее слишком просто обойти (просто измените.

Я делаю обзор кода веб-проекта и хочу убедиться, что у меня есть все скомпилированные dll. Мне предоставили только три файла .dll для статического анализа, но интересно, не пропущу ли я их, потому.

У меня есть 10 больших файлов XML, и некоторые файлы отличаются от других (они представляют данные на одном шаге процесса). Как их сравнить AUTOMATICALLY ? Я знаю, что могу сравнить их вручную.

Я хотел бы сравнить несколько библиотек DLL одной установки с несколькими библиотеками DLL другой установки приложения, с которым я работаю. Мне нужно убедиться, что они точно такие же. Как сравнить.

У меня есть две папки с огромным количеством файлов HTML, и я хочу сравнить каждый файл и как получить diff каждого файла с помощью команд shell script/unix. Пример: Каталог 1: 1.html 2.html 3.html.

Я использую python и пытаюсь установить библиотеку GDAL. У меня постоянно появлялась ошибка, сообщавшая мне, что многие DLL файлов отсутствуют, поэтому я использовал программный Dependency Walker, и.

Мне нужно вызвать файл DLL advapi32.dll в java, чтобы я мог использовать его функцию CryptEncrypt для шифрования. Можно ли получить доступ к функциям файлов dll через JNI или есть какие-то другие.

Мне нужно сравнить, есть ли у dir1 те же файлы, что и у dir2, и в идеале удалить аналогичное содержимое в dir2. До сих пор я пытался использовать команду find: $ find $dir1 $dir2/ $dir2/ -printf.

Читайте также: