On Mon, Jun 10, 2013 at 1:23 PM, Daniel Shahaf <danie...@apache.org> wrote:
> On Sun, Dec 09, 2012 at 02:05:48PM -0000, stef...@apache.org wrote: > > Author: stefan2 > > Date: Sun Dec 9 14:05:47 2012 > > New Revision: 1418963 > > > > URL: http://svn.apache.org/viewvc?rev=1418963&view=rev > > Log: > > Representation sharing interacts badly with our skip-delta algorithm > > as the former potentially extends the delta chain without making that > > immediately visible in the noderev tree used by choose_delta_base. > > > > This patch will (usually) detect thoses cases and limit the delta chain. > > When traversing the noderev history, we assume that reps stored in the > > same revision as the noderev are not shared (which they might still be) > > but all others potentially are. In the latter case, we will simply > > follow the result representation's delta chain and check whether it > > is longer than a reasonable limit. If it is, start a new chain. > > > > * subversion/libsvn_fs_fs/fs_fs.c > > (choose_delta_base): detect most cases of shared reps and limit the > > length of the delta chain in that case. > > > @@ -7149,12 +7150,83 @@ choose_delta_base(representation_t **rep > > + /* verify that the reps don't form a degenerated '*/ > > return SVN_NO_ERROR; > > Scalpel. What is that comment referring to? > Good catch. This is a fragment of a comment that referred to degenerated (O(N) instead of O(log N)) delta chains. The if() section above that spot takes care of this case. Removed in r1491425. -- Stefan^2.