Sorry, got sidetracked halfway through review.

> Github has an option to show diffs ignoring whitespace...

`git` itself can ignore whitespace in diffs too. But they haven't yet incorporated ignoring of whitespace into content tracking.

Lines (or more specifically, text segments) have to exactly match in order to be considered in the rename-detection algorithm. This is because they use a hash system for efficiency.

Diffs are easier because it's `O(n)` (actually `O(n * diff_size)` but this is going off-track) in the size of the files being diffed. If you wanted to do fuzzy tracking of content among many files, you'd need `O(n^2 * w)` where `w` is the size of the commit window that you want to search for content.

I'm thinking it would be possible to do this with hashes too. You would have to store another hash with normalized whitespace. Bonus points if the normalization was programming-language aware, meaning that whitespace inside strings would be preserved. Python would still have a problem with false positives, though I'm thinking the problem wouldn't be that big in practice.

----

`git blame` actually does have an option to do the `O(n^2 * w)` tracking. This may be because they consider `git blame` to be a command where you're investigating something, and so are willing to wait for the results, while `git log` is more of an everyday command where those seconds are going to add up fast.

----

I guess I got sidetracked talking about git in my un-sidetracking.