On Wed, Sep 7, 2016 at 11:02 AM, Stefan Beller <sbeller@xxxxxxxxxx> wrote: > On Wed, Sep 7, 2016 at 10:54 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote: >> Stefan Beller <sbeller@xxxxxxxxxx> writes: >> >>> as we do not want to see dashes ('moved-old'), I think I'l go with >>> "movedfrom" and "movedto". >> >> OK. They would be color.diff.movedFrom and color.diff.movedTo in >> the doc, and "movedfrom" and "movedto" in the code (as the caller >> already downcased them for you to strcmp()). >> >>> When going through the second pass and actually emitting colored lines >>> we only find matches in the hash map if the current line AND the previous line >>> match as we lookup by hash code, i.e. if we have a moved line, but the >>> previous line >>> changed we do not find it in the hashmap and we don't color it, such >>> that the reviewer >>> can spot a permutation. >> >> Hmph. Does this have impact on a line that was at the beginning or >> the end of a file that got moved to the beginning or the end of a >> file (four permutations, of 9 if you throw in "middle"), because >> some cases it does not have a "previous" line? > > I spotted that problem as well. We need to adapt the algorithm a bit more: > > If the previous line is of the same kind (i.e. starting with + or -), > then we have to take it into account, > otherwise (i.e. previous line is different, such as header, hunk header, > or different sign) > then ignore previous line, as the previous line is already > having a different color. > > That works for the very first line of a file as well. That should work to resolve some issues, and ensure the first line of a hunk works correctly. Thanks, Jake