Мне было поручено создать инструмент, который сможет различать и объединять файлы конфигурации для продукта моей компании. Конфигурации хранятся в виде строк XML или URL. Я ищу библиотеку, желательно с открытым исходным кодом с лицензией, совместимой с коммерческим программным обеспечением, которая может делать эти различия. Наше приложение написано на C ++, поэтому библиотеки C ++ лучше всего подойдут, но я хочу взглянуть на библиотеки, специфичные для C #, так как я могу написать оболочку, которая предоставляет его C ++ через COM. Трехсторонние различия были бы идеальными, но двухсторонние приемлемы. Если у него есть понимание XML, это также будет плюсом (поскольку узлы XML могут быть переупорядочены без изменения документа и т. Д.). Любые предложения библиотеки? Должен ли я даже подумать над написанием своих собственных инструментов сравнения в надежде дать ему семантическое знание наших форматов?
Благодаря этому похожему вопросу , я уже обнаружил эту библиотеку Google , которая кажется действительно великолепной, но я все еще ищу другие варианты. Похоже, что он также может выводить различия в формате HTML (используя теги <ins>
и <del>
, которых я не знал, существовавших до того, как я их обнаружил), что может быть очень удобно, но, похоже, унифицировано только разница Мне нужно будет отобразить результаты в веб-браузере, и, вероятно, придется создать интерфейс для выполнения слияний в браузере. Я не ожидаю, что библиотека сможет помочь с этими задачами, но она должна выводить данные в формате, который мне подойдет, создавая его поверх этого. В настоящее время я представляю что-то похожее на TortoiseMerge (параллельные различия, не унифицированные), за исключением браузера. Любые советы / хитрости / дизайнерские идеи о том, как преподнести это, также будут оценены.