> -----Original Message-----
> From: Julian Foad [mailto:julianf...@btopenworld.com]
> Sent: maandag 1 september 2014 15:59
> To: Peter Galcik
> Cc: dev@subversion.apache.org
> Subject: Re: Segmentation fault during diff generation

<snip>

> (In the longer term, I would like it if we could implement this changelist
> filtering in one place instead of scattering these "if" conditions around.
I
> would like to see a code structure more analogous to "find /wc/path <node
> selection conditions: depth, changelists, etc.> | xargs diff", probably
using
> the existing svn_wc__internal_walk_children() function or something
similar
> to it.)

You do know that this kind of restructuring would make it +- impossible to
handle tree changes?

Sure, that structure would work if files would only change... but things
break hard when you start replacing things.

And restructuring that way would be +- impossible once you start applying
changes from multiple origins, like with repository diffs that even handle a
switch in the background... as in this case.

Diff is a very simple output processor over a very hard tree translation
process with dozens of corner cases added to handle all the possible flags
we implement in every layer. (And in many cases explicitly ignoring
ancestry, because that produces nicer diffs...)


Personally I would wish we could just do the changelist filtering in the
output layer, instead of in all the diff drivers separately... But the
current code doesn't properly guarantee access to the local working copy
paths to do that kind of processing there. 

In many cases it prefers to just pass something url like. (Not necessary the
proper url)

        Bert

Reply via email to