My concern here is that you can't have a case-changing rename without a change to the file itself.  Eg:

    % git mv foo tempname
    % git mv tempname FOO
    % git status
    # On branch master
    # Changes to be committed:
    #   (use "git reset HEAD <file>..." to unstage)
    #
    #       renamed:    crlf_file.txt -> CRLF_FILE.txt
    # 

Then we would not detect this because our iterators are case insensitive and the file itself remains unchanged.