On Wed, Mar 6, 2013 at 4:14 PM, Bo Chen <bo.irvine.chen_at_gmail.com> wrote:
> Clarify one point: The file_at_base (or the file @head) refers to the file I
> am currently updating, right?
> I am very curious why the server needs to re-compute the skip-delta. Is
> there any rule to guide the server which pristine version to be delta-ed
> against? To optimize the delta (specifically, to optimize the storage for
> the delta)?
To prevent any confusion, I want to point out that there are
two *independent* places where deltas are being applied:
(1) Between client and server.
This is to conserve network bandwidth and is optional
(depending on the protocol, they may simply send fulltext).
The delta base is always the latest version that client has,
i.e. BASE. In case of an update, the client tells the server
what the respective BASE revision is ("I'm on rev 42 for
sub-tree X/Y. Please send me the data for revision 59.")
Data sent from the client to the server is *always* fully
reconstructed from the incoming delta. This is necessary
to calculate and verify the MD5 / SHA1 checksums. All
of this happens "streamy", i.e. the data gets reconstructed
and processed *while* coming in. There is no temporary
file on the server eventually containing the full file contents.
Data sent from the server to the client always starts as
a fulltext read from the repository. If the client has already
another version of that file and the protocol supports deltas,
the server will read that other revision from the repository, too,
and then calculate the delta while sending it streamingly to
(2) When the server writes data to the repository, it starts of with
some fulltext coming in and *may* choose to deltify the new
contents against some existing contents.
This is done to conserve disk space and results in a chain of
deltas that *all* need to be read and combined to reconstruct
the fulltext. As Ben already pointed out, 1.8 has a number of
tuning knobs that allow you to shift the balance between data
size (small deltas) and reconstruction effort (number of deltas
to read and process for a given fulltext).
Certified & Supported Apache Subversion Downloads:
Received on 2013-03-06 22:47:12 CET