Как показать историю ревизий как ревизии

Как Stack Overflow показывает изменения ревизий в формате, похожем на diff, который они используют?

Меня не волнует переполнение стека как таковое; это просто удобный способ описать мои требования. У меня есть история аудита изменений текстового поля. Я хотел бы показать изменения так же, как Stack Overflow показывает изменения истории изменений. Я помню подкаст Stack Overflow, где Джефф Этвуд обсуждал его, но я не могу найти его в стенограммах и понятия не имею, какой подкаст. IIRC, это не .NET, может Python?

Это для конечного пользователя, поэтому все, что выглядит как Unix-подобный diff, отсутствует. Заманчиво показать два блока и текст, старый и новый, и дать им понять это, но история изменений Stack Overflow ооочень приятнее.


person Walden Leverich    schedule 28.05.2009    source источник
comment
Как бы то ни было, в Википедии также есть довольно хороший пользовательский интерфейс с историей изменений. Вы можете попробовать поискать исходный код MediaWiki.   -  person Matt Solnit    schedule 29.05.2009


Ответы (3)



Стандартная библиотека Python difflib предоставляет такие возможности:

Этот модуль предоставляет классы и функции для сравнения последовательностей. Его можно использовать, например, для сравнения файлов и может производить информацию о различиях в различных форматах, включая HTML, контекст и унифицированные различия. Для сравнения каталогов и файлов см. Также модуль filecmp.

person Greg Hewgill    schedule 28.05.2009
comment
difflib, кажется, делает только линию за раз. Я ищу встроенное различие, которое использует SO. Может, я смогу это использовать. - person Walden Leverich; 29.05.2009
comment
difflib может сравнивать любые две последовательности; ли это последовательности строк, символов, слов, предложений или изображений - решать вам. Я использовал diffflib для сравнения текста на уровне слов, и он отлично подходит для этого. - person Greg Hewgill; 30.05.2009

Они использовали Beyond Compare. Насколько я могу судить, это не родная .NET-программа, но вы можете использовать ее как инструмент командной строки.

person Nikhil Chelliah    schedule 28.05.2009
comment
Я не уверен, что это правильно. Я считаю, что это то, что используют на стороне разработки (копание исходных ревизий, сценарии db и т. Д.), А не то, что они используют для отображения ревизий в Интернете. - person Walden Leverich; 29.05.2009