> -----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