So I can confirm that it was just an old repo that was not fixed. Doing a new branch gives the same results. From what I can tell, it is a 'newline' that is screwing things up. I'll try to explain the steps, and maybe I'll find an answer. When annotating a merge revision, we use roughly this algorithm. We have 3 sets of lines "new_lines", "annotated_left_parent" and "annotated_right_parent": 1) Match "new_lines" with "left_parent" (no annotations), for lines which match, copy the annotations from "annotated_left_parent". For lines which do not, annotate them as "new". This generates "annotated_new_lines" 2) Now compare "annotated_new_lines" with "annotated_right_parent". Note that this is an *annotated* comparison. a) Lines which match exactly are just copied across (as generally expected) b) For unmatched regions, compare the unannotated "new_lines" with the unannotated "right_parent". c) For lines which match i) If "annotated_new_lines" claims "new", then simply copy the annotation from "right_parent" ii) For lines which do not claim "new", resolve them by computing the DAG heads() between the two annotations. iii) If heads() does not resolve to a simple revision, break the tie using _break_annotation_tie. Now stepping through the annotation of the file during revision sp1r-kostja@bodhi.(none)-20070731194738-47444 What I'm seeing is: (Pdb) pp matching_left_and_right [(0, 0, 21), (34, 22, 1), (35, 35, 10), (46, 46, 161), (250, 250, 105), (357, 357, 249), (608, 608, 783), (1391, 1392, 1), (1392, 1397, 3163), (4556, 4561, 3), (4560, 4565, 127), (4687, 4692, 0)] Now the curious bit is "(34, 22, 1)" that says that "annotate_right_parent" matched 1 line in the new "annotated_lines". When you look closer it is: (('sp1f-table.cc-19700101030959-nsxtem2adyqzwe6nz4cgrpcmts3o54v7', '