Любой достойный текстовый механизм diff/merge для .NET?

Требования:

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

Google нашла следующее:

EDIT:

Нет приложений, пожалуйста, только библиотеки.

Ответ 2

Я думаю, что "Generic - Reusable Diff Algorithm в С#" на Codeproject - это лучшее, что вы можете найти в качестве .NET-Engine для diff/patch/merge. Я сделал проект самостоятельно, и он соответствует моим потребностям с большинством сценариев. Есть один или два сценария худшего случая, когда алгоритм делал патч файл больше, чем он должен быть. Но в большинстве случаев это работает отлично для меня (текстовые файлы размером > 30 МБ).

В настоящее время я тестирую другой Codeproject-Project, который вы можете найти здесь: http://www.codeproject.com/KB/applications/patch.aspx Он использует некоторые библиотеки DLL от Microsoft для исправления, поэтому он выглядит интересным. Но эти DLL неуправляемы, и этот проект является лишь своего рода оболочкой для него. Но, возможно, это может помочь вам.

Edit: Просто нашел другой проект DiffPlex: http://diffplex.codeplex.com/ Это комбинация библиотеки .NET Diffing Library с браузером Silverlight и HTML diff. Как указано там, DiffPlex - это библиотека, которая использует CodePlex для генерации различий файлов.

Ответ 3

GitSharp включает в себя механизм diff на основе meyers diff. Взгляните на демоверсию, которая реализует простой wpf diff viewer на основе коллекции Diff.Sections: http://www.eqqon.com/index.php/GitSharp#GitSharp.Demo

Ответ 4

Ни один из ответов до сих пор (кроме, возможно, ссылки GitSharp) не связан с 3-сторонним слиянием, поэтому в случае, если он помогает кому-либо, я недавно портировал реализацию javascript diff3 Тони Гарнок-Джонса (из synchrotron, основанный на Hunt и McIlroy 1976) на С#.

Это упрощенный однопоточный порт методов diff и трехстороннего слияния, но он стандартный алгоритм и до сих пор работает очень хорошо для меня: https://gist.github.com/2633407