summaryrefslogtreecommitdiff
path: root/README
blob: 3e72daa6475f480be01d7c6cd41ddf8564641525 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
 -*- Text -*-

	       Xdelta -- A binary delta generator

Announcing version 1.1.2 of Xdelta.  Xdelta is an application program
designed to compute changes between files.  These changes (deltas) are
similar to the output of the "diff" program in that they may be used
to store and transmit only the changes between files.  However, unlike
diff, the output of Xdelta is not expressed in a human-readable
format--Xdelta can also also apply these deltas to a copy of the
original file.  Xdelta uses a fast, linear algorithm and performs well
on both binary and text files.

Xdelta 1.1.2 is a stable, maintenence release.  New, ongoing work on
Xdelta has focused on a new storage system with features similar to
the RCS command set.  For more information on new development, see the
Xdelta-2.0 release series at http://xdelta.sourceforge.net.

Xdelta was designed and implemented by Joshua MacDonald.  The delta
algorithm is based on the Rsync algorithm, though implementation and
interface considerations leave the two programs quite distinct.  The
Rsync algorithm is due to Andrew Tridgell and Paul Mackerras.

To compile and install Xdelta, read the instructions in the INSTALL
file.  Once you have done this, you should at least read the first few
sections of the documentation.  It is available in info format.  All
documentation is located in the doc/ subdirectory.

This release, version 1.1.2, and future releases of Xdelta can be
found at http://xdelta.sourceforge.net.

Xdelta is released under the GNU Library Public License (GPL), see the
file COPYING for details.

There is mailing list for announcements:

   xdelta-announce@lists.sourceforge.net

you can subscribe to the mailing list or file bug reports through
Sourceforge at:

   http://sourceforge.net/projects/xdelta/

Comments about Xdelta can be addressed to the following addresses:

   jmacd@cs.berkeley.edu

The man page describes how to use Xdelta in more detail:

NAME
       xdelta - Invoke Xdelta

SYNOPSIS
       xdelta subcommand [ option...  ] [ operand...  ]

DESCRIPTION

       Xdelta provides the ability to generate deltas between a pair
       of files and later apply those deltas.  It operates similar to
       the diff and patch commands, but works on binary files and does
       not produce a human readable output.

       Xdelta has three subcommands, delta, patch, and info.  Delta
       accepts two file versions and produces a delta, while patch
       accepts the original file version and delta and produces the
       second version.  The info command prints useful information
       about a delta.  Each subcommand will be detailed seperately.

   Gzip processing

       Attempting to compute a delta between compressed input files
       usually results in poor compression.  This is because small
       differences between the original contents causes changes in the
       compression of whole blocks of data.  To simplify things,
       Xdelta implements a special case for gzip(1) compressed files.
       If any version input to the delta command is recognized as
       having gzip compression, it will be automatically decompressed
       into a temporary location prior to comparison.  This temporary
       location is either the value of the TMPDIR environment
       variable, if set, otherwise "/tmp".

       The Xdelta patch header contains a flag indicating that the
       reconstructed version should be recompressed after applying
       the patch.  In general, this allows Xdelta to operate
       transparently on gzip compressed inputs.

       There is one potential problem when automatically processing
       gzip compressed files, which is that the recompressed content
       does not always match byte-for-byte with the original
       compressed content.  The uncompressed content still matches,
       but if there is an external integrity check such as
       cryptographic signature verification, it may fail.  To prevent
       this from happening, the --pristine option disables automatic
       gzip processing.

   MD5 integrity check

       By default, Xdelta always verifies the MD5 checksum of the
       files it reconstructs.  This prevents you from supplying an
       incorrect input during patch, which would result in corrupt
       output.  Because of this feature, you can feel confident that
       patch has produced valid results.  The --noverify option
       disables MD5 verification, but this is only recommended for
       performance testing.

   Compressed patch format

       Xdelta uses a fairly simple encoding for its delta, then
       applies zlib compression to the result.  You should not have to
       post-compress an Xdelta delta.

   Delta

       The delta subcommand has the following synopsis:

       xdelta delta [ option...  ] fromfile tofile patchout

       Computes a delta from fromfile to tofile and writes it to patchout

   Patch

       The patch subcommand has the following synopsis:

       xdelta patch [ option...  ] patchin [ fromfile [ tofile ]]

       Applies patchin to fromfile and produces a reconstructed
       version of tofile.

       If fromfile was omitted, Xdelta attempts to use the original
       fromfile name, which is stored in the delta.  The from file
       must be identical to the one used to create the delta.  If its
       length or MD5 checksum differs, patch will abort with an error
       message.

       If tofile was omitted, Xdelta attempts to use the original
       tofile name, which is also stored in the delta.  If the
       original tofile name already exists, a unique filename
       extension will be added to avoid destroying any existing data.

   Info
       The info subcommand has the following synopsis:

       xdelta info patchinfo

       Prints information about patchinfo and the version it
       reconstructs, including file names, lengths, and MD5 checksums.

   Options
       -0..9  Set  the  zlib compression level.  Zero indicates no
              compression.  Nine indicates maximum compression.

       -h, --help
              Print a short help message and exit.

       -q, --quiet
              Quiet.  Surpresses several warning messages.

       -v, --version
              Print the Xdelta version number and exit.

       -V, --verbose
              Verbose.  Prints a bit of extra information.

       -n, --noverify
              No verify.  Turns off MD5 checksum verification of the
	      input and output files.

       -m=SIZE, --maxmem=SIZE
              Set an upper bound on the size of an in-memory page
              cache. For example, --maxmem=32M will use a 32 megabyte
              page cache.

       -s=BLOCK_SIZE
              Set the block size, unless it was hard coded (20% speed
              improvement).  Should be a power of 2.

       -p, --pristine
              Disable  the  automatic  decompression of gzipped
              inputs,  to prevent unexpected differences in the
              re-compressed content.