Yeah, I didn't mention it, but I didn't think it was doing this wrong in a systematic way. I only wondered if there was some kind of heuristic that could improve the cases where it goes wrong, without affecting the cases where it would do it right. I know this is not an easy problem, lest it would already been fixed. On Wed, Dec 12, 2012 at 7:29 PM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Kevin <ikke@xxxxxxxxx> writes: > >> Regularly I notice that the diffs that are provided (through diff, or >> add -p) tend to disconnect changes that belong to each other and >> report lines being changed that are not changed. >> >> An example for this is: >> >> /** >> + * Default parent >> + * >> + * @var int >> + * @access protected >> + * @index >> + */ >> + protected $defaultParent; >> + >> + /** >> >> I understand this is a valid view of what is changed, but not a very >> logical view from the point of the user. >> >> I wondered if there is a way to improve this, or would that have other >> consequences. > > I think your example shows a case where the end of the pre-context > matches the end of the added text in the hunk, and it appears it may > produce a better result if you shift the hunk up. But I think that > works only half the time. Imagine: > > @@ -K,L +M,N @@ > } > > +void new_function(void) > +{ > + printf("hello, world.\n"); > +} > + > void existing_one(void) > { > printf("goodbye, world.\n"); > > Here the end of the pre-context matches the end of the added lines, > but it will produce worse result if you blindly apply the "shift the > hunk up" trick: > > ... what was before the } we saw in the precontext ... > +} > + > +void new_function(void) > +{ > + printf("hello, world.\n"); > } > > void existing_one(void) > > So I think with s/Regularly/About half the time/, your observation > above is correct. > > I think the reason you perceived this as "Regularly" is that you do > not notice nor appreciate it when things go right (half the time), > but you tend to notice and remember only when a wrong side happened > to have been picked (the other half). -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html