On Thu, Dec 01, 2016 at 02:22:47PM -0800, Junio C Hamano wrote:
> Jeff King <p...@peff.net> writes:
> >> It took me a while to dig it up because the topic is so old, but
> >> https://public-inbox.org/git/pine.lnx.4.58.0504251832480.18...@ppc970.osdl.org/
> >> is the thread I had in mind. The idea of rename detection followed
> >> soon afterwards.
> > Thanks for an interesting read. Your diff-tree-helper patch is very
> > similar to what I wrote.
> > I do think the right decision was made back then. The single-process
> > model is much more efficient, and it was over 10 years until somebody
> > actually wanted to expose the functionality to a script (and even now,
> > I'm not convinced enough people want it to even merit inclusion).
> Well, 10 years ago the person in the thread who argued "who cares
> about producing patches? each step in plumbing should do one thing
> and one thing only and do so well" was Linus, so your coming up with
> the diff-tree-helper again may indicate that we may want to step
> back and retry the experiment again, perhaps?
I think there are two questions, looking historically.
One is whether the functionality should be exposed to scripts at all.
The second is, assuming it should be exposed, in which order to do it.
You can write a series of small scripts, and then tie them together. Or
you can write tie it all together in C, and then make specific helpers
to expose the various bits.
The advantage of the first technique is that the tools are used
consistently by all parts of the system, so you know they don't grow
weird bugs or fail to handle corner cases. The advantage of the second
is that most people want the "tied-together" functionality, and it can
run a lot faster in-process.
So mostly I was suggesting that the right decision 10 years ago was to
optimize for speed in the common case, and let people worry later about
whether they wanted to expose the functionality in more flexible ways.
And that brings us to today.
It sounds like you are in favor of adding diff-pairs (and certainly it
shouldn't _hurt_ anybody if they are not interested in using it; you'll
notice the patch didn't need to touch the diff code at all).