6

How does Stack Overflow show the revision changes in the diff-like format they use?

I don't care about Stack Overflow per se; it's just a convenient way to describe my requirement. I have an audit history of changes to a text field. I'd like to show the changes the same way Stack Overflow shows revision history changes. I recall a Stack Overflow podcast where Jeff Atwood discussed it, but I can't find it in the transcripts and have no idea what podcast. IIRC, it's not .NET based, maybe Python?

This is for end-user consumption so anything that looks like a Unix-like diff is out. It is tempting to show two blocks and text, old and new and let them figure it out, but the Stack Overflow revision history is sooo much nicer.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Walden Leverich
  • 4,416
  • 2
  • 21
  • 30
  • For what it's worth, Wikipedia has a pretty good revision history UI as well. You could try looking around in the MediaWiki source code. – Matt Solnit May 28 '09 at 22:01

3 Answers3

2

The Python difflib standard library provides this sort of capability:

This module provides classes and functions for comparing sequences. It can be used for example, for comparing files, and can produce difference information in various formats, including HTML and context and unified diffs. For comparing directories and files, see also, the filecmp module.

Greg Hewgill
  • 951,095
  • 183
  • 1,149
  • 1,285
  • difflib seems to do line at a time diffing only. I'm looking for the in-line diffing that SO uses. Maybe I can use it though. – Walden Leverich May 29 '09 at 18:03
  • difflib can compare any two sequences; whether those are sequences of lines, characters, words, sentences, or images is up to you. I have used difflib to compare text at the word level and it works well for that. – Greg Hewgill May 29 '09 at 21:35
1

Since you didn't really specify a language: I've done this using the PHP PEAR package Text_Diff.

Paolo Bergantino
  • 480,997
  • 81
  • 517
  • 436
  • Seems to have some promise. Need to figure out how to serve this up from w/in an asp.net app. Perhaps a php server on the back end that I can access from server-side code. – Walden Leverich May 29 '09 at 18:59
  • @WaldenL you can make a soap service in PHP. Last time I did it you had to manually make a WSDL, but somone finally made a soap object you can inherit and all your public functions get exposed in a WSDL automatically. – Justin Dearing Aug 13 '09 at 21:39
-1

They used Beyond Compare. As far as I can tell, it's not a native .NET program, but you can use it as a command-line tool.

Community
  • 1
  • 1
Nikhil
  • 5,705
  • 1
  • 32
  • 30
  • 1
    I'm not sure that's correct. I beleive that's what the use on the development side (diffing source revisions, db scripts etc.) and not what they use for displaying the revisions online. – Walden Leverich May 29 '09 at 15:49