Итак, мне необходимо реализовать в неком проекте версионность статьей, которые пишут пользователи. Это можно сделать просто сохраняя несколько объектов статьи и нумеруя версии. Но мне охота сделать что-то наподобие гитхабовских диффов. То есть, человек редактирует статью и может выбирать сравнение с предыдущими версиями, с подсветкой сделанных изменений.
Суть вопроса: есть ли для этого какая-то библиотека (вплоть до биндингов гита), или же придётся писать алгоритм ручками? И, если второе, то как бы к этому подступиться? Это же не просто сравнение строк, наверное. И даже, если сравнивать записи посимвольно, как наиболее эффективно реализовать алгоритм?