Nice tutorial, but aren&#x27;t you aware that &quot;git blame -w&quot; ignores whitespace changes? git blame also always follows renames. git&#x27;s rename detection isn&#x27;t foolproof (if I edit and rename A.cpp to A-star.cpp at the same time as adding a new A.cpp file it won&#x27;t detect it), however there are two more blame options for that: -C to follow lines copied between files, and -M to follow lines moved within a file.<p>Unfortunately, adding -M and -C will quite badly increases the time to compute the blame. Both take an adjustable parameter (min number of characters to match), but I found I actually had to reduce it to catch all the lines in an example of the A.cpp -&gt; A-star.cpp move I did yesterday.