Heh. Okay, here's some interesting stuff just revealed.

Visual Studio 2017 is in release candidate stage. My boss has a copy running. And they have revamped the Annotate command. Now you right-click and instead of saying "Annotate" it says something like "(Blame) Annotate". And looking at it in process explorer, they are no longer using LibGit2 library, and instead are calling "git.exe" directly from the command line.

But... and here's the kicker... they still get the same "good" result.

How? Just like you said, they're walking the tree themselves. Process monitor shows them doing a "cat-file" over and over again to retrieve the file contents for each one of the checked-in revisions for that file. They're diffing each revision by hand, ignoring whitespace and bitness as they go.

In other words, to get those good results, they had to re-invent the wheel and do an end-run around Git Blame entirely.

Sigh.
_________________________
Tony Fabris