Barret Rhoden <brho@xxxxxxxxxx> writes: >> So... I dunno. > > I guess if you swap the lines as well as change them,... > ... Then it won't have the semantic knowledge that "one" == "1". If a user > is ignoring a commit, we don't have an oracle that knows exactly what > that commit did to determine what commit the user wants blamed. Yeah, and if the original had two adjacent lines, and replacement has three adjacent lines, the algorithm would not even know if - the first line in the original was split into first two in the update and the second line was modified in place; or - the first line in the original was modified in place and the second line was split into the latter two lines in the update In short, there is no answer to "what is the corresponding line of this line before this commit changed it?" in general, and any algorithm, as long as it tries to see what was the "corresponding line" of the line that is blamed to a commit, would not produce results human readers would expect all the time. As you said, heuristics may get us far enough to be useful, though ;-).