This can take a long time. As can the rest of the algorithm. Its better if you can make this incremental, so callers can ask you for some data, display it, then ask for more.

To see what I mean, run `git gui blame` and watch it fill in for a file. We want to be able to do the same thing in EGit, or other applications that are using blame. Sometimes users are happy to get recent row range results quickly, and they don't even need to wait for the whole file to finish.