Re: [PATCH/RFC] blame: accept multiple -L ranges
From: Eric Sunshine <hidden>
Date: 2016-06-15 22:58:03
On Tue, Jul 9, 2013 at 12:39 PM, Junio C Hamano [off-list ref] wrote:
Eric Sunshine [off-list ref] writes:quoted
As implemented by this patch, the behavior of git-blame with multiple -L's is consistent with that of git-log with multiple -L's. The implemented behavior feels intuitive to me, but I can see how the behavior you suggest could feel intuitive to others. If I re-do the patch to work the way you describe above, how should we deal with the inconsistent behaviors between the two commands?The suggestion to error out was more about "start simple, strict and obvious to make it easy to explain" and nothing else. If we start with a simple and strict version, we can later loosen it without making an input that was valid earlier invalid. If we start with too loose, on the other hand, it would be hard to tighten it later.
Makes sense.
But the only two things I care deeply about are, in a file whose
contents is:
C
B
A
B
C
D
(1) The range "-L /A/,/B/" finds the first A from the beginning,
and then chooses B that comes _after_ it, making it equivalent
to -L3,4 (not -L3,2 or -L2,3).
(2) In the ranges "-L <anything>,/B/ -L /C/,<anything>", the
beginning of the second range is found by choosing C that comes
_after_ the end of the previous range (/B/ may choose either
the second or the 4th line, and the only C that comes after
either of them is the 5th line and that is where the second
range should begin, not at the beginning of the file). The
same for "-L 1,3 -L /C/" (only C that comes after 3 is eligible
to be the beginning of the second range).Thinking aloud: Thus, for "-L 1,5 -L /C/", no C would be found.
I view it as a nice addition to coalesce two overlapping ranges given exactly by numbers, e.g. "-L 100,200 -L 50,102". I do not have a strong objection to it, as long as it does not interfere negatively with ranges specified by patterns.
Okay, I will base my rewrite upon the above constraints, along with other observations from your initial response. -- ES