[REBOL] Re: auto-update engine
From: greggirwin:mindspring at: 15-Feb-2003 14:07
Sac> What the rest of us need (possibly -- see end) is a process that will compare
Sac> Version 1 source with Version 2 source and ship a delta that consists only of
Sac> the edit instructions to change V1 into V2.
As Gabriele said, I've tackled this one, as has Volker. I haven't
taken the time to analyze Volker's algorithm in any depth, so I'll let
him speak to that if he wants. I implemented a DIFF system using the
well-known longest-common-subsequence (LCS) algorithm at its core.
It produces a block of commands that you DO against the original
version to create the new version. It all works, but has some things
I'd like to improve - which is why I haven't released it beyond a
couple IOS servers for feedback. The biggest problem is that it's
SLOOOOOW to create DIFFs. For small files, diff'ing on lines, it's
probably fast enough, but not fast enough for byte DIFFs on EXEs. The
way it works, you should be able to diff on any lexical unit you want
(e.g. functions, blocks, etc.), but that's one of the things I need to
delve into more. The big advantage there is that going to larger units
means it will run faster because it's the number of items it has to
compare that kills the speed.
To be really useful, though, you need a good storage/repository system
and that's something I haven't spent any time on yet.