Skip to content

rafaelmartins/diffball

Repository files navigation

--05/09/2004--

diffball is a general purpose delta compression/binary differencing 
suite.  As of 0.4, it currently supports the follow formats

----FORMATS-----

Format		Read	Encode	Conversion
bdiff		yes	yes	yes
bdelta		yes	yes	yes, as of bdelta-0.1 (1)
bsdiff3		yes	no	no-  untested read support.
bsdiff4		yes	no	no  (2)
fdtu		yes	no	yes (3)
gdiff v4	yes	yes	yes
gdiff v4  (tweaked, using relative offset addresses)	
		yes	yes	yes (4)
switching	yes	yes	yes
unified diff	yes*	no	beta, but yes.  Normally disabled.
				only non-recursive patches.  It needs finishing...
xdelta-1.1.0	yes	no	yes

(1) bdelta is a subproject of deltup, which has gone the way of the dodo.
    deltup was originally intended as src patching solution for gentoo, so 
    there are a few users still using it.  That said, I'm currently working 
    on src patching, and will be removing deltup from the gentoo tree.
    What this means, is that deltup isn't likely to get any updates anytime 
    soon, let alone bdelta which was a side project of deltup.
    Interesting format purely due to it's compressability, aside from that, 
    this format will live on in diffball as long as it's minimal to support it.

(2) The code for conversion has been written already for both versions.  I've not 
    added a necessary option to convert_delta to pass in the reference file- 
    bdelta is an overlay format, meaning it's add commands *need* the reference
    file to work, requiring an extra command line option to convert_delta.
    Adding this is trivial, so if you want it, either email me, or submit a patch 
    that uses the popt interface I've so far based all options upon.

(3) fdtu isn't anything to write home about, it's a wrapped xdelta format w/ 
    redundant information.  It's related to (1) above, a byproduct of deltup.
    I don't like this format, and intend to remove it once deltup is completely 
    gone.
    Frankly I don't like the fact that it *is* xdelta's output, just with a 
    format header/footer appended on that adds no value, aside from obscuring the 
    fact that the actual differencing is done by xdelta.
    That said, if you want it/need it left in, you're going to have to contact me 
    regarding it.  It'll live through the 0.4* releases, but I intend to remove it 
    as soon as it won't affect users (considering it can undergo conversion, it 
    may not even be supported/included past 0.4).

(4) This is completely non-standard, and pretty much a minor tweak I did to the 
    gdiff4 format.  Gdiff4 in it's original rfc incarnation specifies all offsets 
    absolute, rather then relative to the last copy position.  This uses relative 
    addressing, providing a modest (although not trivial) space saving.
    Modification of apps that support gdiff4 to support this tweak ought to be 
    minor, contact me if you need a hand or have questions.
    I'm tempted to submit this as an rfc, although I would think it might be 
    overruled in preference for vcdiff (the basics of vcdiff I intend to add at a
    later date).

----BINARIES----

differ 		general purpose differencing program, 
diffball 	specific implementation for processing tarball's- usually this
		results in a smaller delta then differ, w/ a better run-time.
		Differ does pull ahead for tarballs in a few oddball cases, notably 
		the evolution src tarballs.
patcher		reconstruction program, if a format has read support 
		patcher can reconstruct the target file.
convert_delta	program for converting between formats, if write support 
		is supported for the target format, and read support for 
		the source, it can convert between the two producing a 
		correct patch.

--DEPENDENCIES--

bzip2-1.*   if you need bzip2-0.9.* support, iirc there was a lib interface change 
	    from what I can recall, it's minor, handled fairly easily by a few 
	    macro tricks.  If you need bzip2-0.9.* support, email me, and I'll add 
	    it.
zlib-1.1.*  I've done my testing/compilation against zlib-1.1.4.  That said, I 
	    would suspect compiling against anything zlib-1.* wouldn't be an 
	    issue, but don't quote me on that.
	    Again, if you experience compilation problems, email the author.
	    I'm more then willing to check into supporting older versions of zlib, 
	    just need to be told that somebody actually wants this. :)
popt-1.7    I've not tested against anything prior to 1.7.  Contact me if you have 
	    issues, and I'll see what I can do.

-----SETUP------

First off, make sure you have the dependencies met.  They're minor, but currently 
you need all of them met- down the line, I'll likely make zlib/bzip2 a compile time 
option.  That said, it isn't configurable as of 0.4

To configure and install diffball, first run the 'configure' script 
which will create a makefile along w/ a config.h appropriate to your 
configuration choicse, and your system.  
From there, just type "make".

Any compilation issues that come up, please contact me with the make failure, dependency versions, 
OS, (eg debian, gentoo, rh, OSX 10.x), and be willing to answer a few questions so I can fix 
the problem. :)

---COPYRIGHT----

The diffball suite is releaed under the BSD 3 clause; as of the time of this
writing, all copyright is copyright Brian Harring- the project however does not
require centralized copyright assignment for any patches.

For exact terms of BSD 3 clause, please see the COPYING file.

--AVAILABILITY--

For the foreseeable future diffball will be hosted git://pkgore.org/diffball

-----AUTHOR-----

Diffball was written, and is maintained by Brian Harring.
If you need to contact me, my email address is ferringb@gmail.com
Any weirdness, suggestions, or complaints kindly contact me and
I'll see what I can do to make it better.