[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: How to do annotate

From: Greg Hudson <ghudson_at_MIT.EDU>
Date: 2002-08-13 08:22:43 CEST

On Tue, 2002-08-13 at 01:59, Daniel Berlin wrote:
> 2. As you apply deltas, and generate bytes, each range of bytes generated
> gets marked with the revision number associated with that window (if any. If
> you don't find it in the map, it means it doesn't delineate a new
> revision, and we assign it the previous number), which we lookup.

This is too simplistic. Let me throw out some concerns. First, an

  SRC: foo\nbar\nbar\n
  DST: foo\nbar\nfoo\nbar\n

The instructions for this delta look like:

  Copy 8 bytes from src offset 0
  Copy 8 bytes from src offset 8

A line-based diff would notice that only the third line (bytes 8-11) was
new in the destination. So *half* of the second copy is new, and half
is old.

Bill Tutt implied he had a way of recognizing this, by comparing the
self-compression of SRC to the delta between SRC and DST. I'm dubious
(it seems very fragile at best), but regardless, let's move on to
concern number two: windows. If I insert 128K at the beginning of a
file, then *every* window will look like new data, even though only the
first 128K is new.

Fundamentally, our binary deltas are about the most efficient way we can
come up with of reconstructing DST given SRC. They are not about
determinine what changed, either by line or by byte range.

To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue Aug 13 08:23:26 2002

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.