SZEDER Gábor <szeder.dev@xxxxxxxxx> writes: > - When a commit modifies an interesting path, the line-log machinery > first checks which diff range (i.e. hunk) modify any line ranges. > This is done in diff_ranges_filter_touched(), where the outer loop > iterates over the diff ranges, and in each iteration the inner > loop advances the line ranges supposedly until the current line > range ends at or after the current diff range starts, and then the > current diff and line ranges are checked for overlap. > ... > Fix that loop condition in diff_ranges_filter_touched() to not > treat 'end' as part of the line range. > > - With the above fix the assertion error is gone... but, alas, we > now get stuck in an endless loop! > ... > Fix this condition in range_set_difference() to not treat 'end' as > part of the line range. > > - With the above fix the endless loop is gone... but, alas, the > output is now wrong, as it shows both line ranges for HEAD, even > though the first line range is not modified by that commit: > ... > Fix this condition to not treat 'end' as part of the line range, > just like in the previous cases. > > After all this the command in the above example finally finishes and > produces the right output: What a lengthy journey X-<. Thanks for an amusing description.