Am 15.02.21 um 20:24 schrieb Ævar Arnfjörð Bjarmason: > > On Mon, Feb 15 2021, René Scharfe. wrote: > >> Your reasoning applies to patches generated without -W as well. If the >> precontext contains a function line then the @@ line should not contain >> a function comment. However, e.g. with this: >> >> -- snip -- >> cat >a <<EOF >> func a >> >> func b >> 1 >> 2 >> 3 >> EOF >> sed 's/3/three/' <a >b >> diff -up a b >> -- snap -- >> >> ... I get this: >> >> --- a 2021-02-15 18:30:21.000000000 +0100 >> +++ b 2021-02-15 18:30:21.000000000 +0100 >> @@ -3,4 +3,4 @@ func a >> func b >> 1 >> 2 >> -3 >> +three >> >> So diff(1) shows the previous function line. git diff does the same. >> >> The behaviour of diff(1) and git diff does make sense to me: It's easy >> to implement and the only downside is that it produces extra output in >> some cases. >> >> I can understand that users would rather have a tidy diff without >> distractions, though. So I like the output change you propose. > > Does GNU diff have something like git's -W, both "diff -U 0 -F func a b" > and "diff -U 0 -p a b" don't extend the context window as we do. Exactly my point: GNU diff doesn't have something like -W, but still can show an unchanged function at the @@ line, because it searches upwards starting just above the first shown line, and the name of the actually changed function might be in one of the shown lines. > I don't think the patch I'm submitting here would make sense for GNU > diff, since there it just shows the context without being guaranteed to > show the full set of lines leading up to it under -W, but with Git diff > we do that, so I think it makes sense to omit the context. Given the goal to show the name of the changed function it *would* make sense to start searching at the first changed line instead. >> However, I'm not sure it would be a good idea to clear @@ lines of hunks >> generated without -W that have function lines in their precontext, even >> though it would be a logical thing to do. > > Yes, I don't think that's a good idea either. I think it only makes > sense under -W where the user explicitly asks "show me the function this > change was in", and we're (before this patch) showing different context > on the basis of emergent behavior. Right, -W never needs diff(1)'s -p, while the case is less clear for diffs generated without -W. René