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