This is a wrapper around Google's open-vcdiff library, which provides an encoder and decoder for the format described in RFC 3284: "The VCDIFF Generic Differencing and Compression Data Format." The encoding strategy is largely based on Bentley-McIlroy 99: "Data Compression Using Long Common Strings.
For more details visit: http://code.google.com/p/open-vcdiff
# Install the gem: sudo gem install romanbsd-vcdiff
require 'VCDiff' # Encoding dictionary = IO.read('dictionary_file') modified = IO.read('modified_file') # Optional encoder.format_flags = VCDiff::VCD_FORMAT_INTERLEAVED | VCDiff::VCD_FORMAT_CHECKSUM encoder = VCDiff::Encoder.new(dictionary) res = encoder.encode(modified) # Decoding decoder = VCDiff::Decoder.new orig = decoder.decode(dictionary, res) orig == modified # -> true