Я ищу утилиту сравнения файлов специально для файлов .ini, обычно используемых в качестве файлов настроек.
Существует множество инструментов для сравнения файлов (WinDiff, Beyond Compare, CompareIt, WinMerge, ...), но ни один из инструментов, которые я пробовал, не может хорошо обрабатывать файлы .ini.
Типичный файл .ini может выглядеть так:
[Settings]
Setting1=abc
Setting2=xyz
Инструмент должен сопоставлять строки на основе строки перед знаком равенства, а затем показывать различия во всем остальном после знака равенства. Порядок строк в разделе (разделы указаны квадратными скобками) не имеет значения, и его следует игнорировать.
Я не могу найти никакого инструмента, который мог бы с этим справиться. Обычно существующие инструменты показывают различия в начале строки перед знаком равенства (если большая часть текста после знака равенства совпадает), они будут бороться с переупорядоченными строками (либо отображать все как измененные, либо сопоставлять некоторые строки и отображать оставшиеся как удаленные в одном месте, а затем добавленные в другом). Я даже нашел некоторые инструменты, в которых можно ограничить соответствие текста, например. используя регулярные выражения, но они просто игнорируют оставшуюся часть строки, и я не могу сопоставить строки на основе одного шаблона (то есть все до знака равенства), а затем сравнить их на основе другого (все после знака равенства).
Beyond Compare имеет отсортированное правило INI ты можешь скачать.
Да, я знаю, что это древний вопрос, но я хотел бы предложить инструмент, который я написал:
dzIniFileFormatter который доступен из SourceForge
Я часто просто сортирую файлы перед сравнением. Не поможет, если у вас есть что-то вроде
[foo]
bar1=xyz
bar2=abc
[foo2]
bar1=lky
но если предположить, что ваши ключи уникальны (и, следовательно, могут быть сопоставлены с разделом), это часто работает в крайнем случае.
Попробуйте vimdiff. Вот пример с файлами .ini.
Эта услуга должна вам помочь. Сравнивает более двух файлов конфигурации http://inicompare.io/
Мне всегда нравился Winmerge, очень настраиваемый.