Quoting Martin Pool <[EMAIL PROTECTED]>: > On 15 Nov 2000, Rob Russell <[EMAIL PROTECTED]> wrote: > > > At the Ottawa Linux Symposium, I heard talk of a proof-of-concept > version > > of diff rewritten to use the rsync algorithms to produce diffs across > a > > network. Does such a beast still/actually exist? <potentialy boring re-iteration of stuff already posted on this list> I dunno if this is the same thing you were after, but there is also xdelta; http://xdelta.sourceforge.net/ xdelta is a bit different to rsync in that it calculates more optimal deltas directly from <oldfile> to <newfile> without using an intermediate <sigfile>. This means delta calculation requires access to both files, unlike rsync which just requires <newfile> and a much smaller <sigfile>. However, it can be used to update remote versions providing the version of the remote file can be identified and either a copy of that version or a pre-calculated delta for that version is available. xdelta was developed as delta compressed storage and distribution for a revision control system (like the RCS part of CVS), hence the reliance on, and optimisations for, local access to all versions of the file. xdelta is not not suitable for syncronising or calculating deltas for arbitary seperated files, but it does have a very clean implementation, fairly good documentation, and a nice API. It even has a simple but powerful application filesystem API using a database back-end, allowing simple atomic access to any version or delta between any pair of versions. I'm sure some applications looking at using rsync could use xdelta instead, and hence benefit from more optimal deltas and and the powerful API. <potentialy boring re-iteration of stuff already posted on this list> > It has not yet existed, but I'm working on it. More specifically, it > exists in the libhsync CVS tree on http://cvs.samba.org/, but it > doesn't work very well yet. > > I'm changing libhsync to have an API much like zlib/bzlib, in the hope > that this will make network app integration simpler. [...] I am 90% of the way through an "example implementation" of exactly this in pure python. I should be finished within a week (it's only a couple of hours work, but I dunno when I'll find those hours...) and I'll announce it on this list. I can gaurentee that it will not be fast or compatible with other implementations, but it will be simple and hence I _should_ be able to get it pretty bug free. I'm not intending it to be for real applications, more as an academic excercise and tool to help explain the algorithm. Also, its something to use in my python app-under-development till something real is ready. I'm actualy hanging out for a real implementation of this for something I'm working on in python. As soon as you get it workable, I'd like to swig a python wrapper around it. -- ABO: finger [EMAIL PROTECTED] for more information.
