Ответ 1
Хороший вопрос!
http://www.serverwatch.com/tutorials/article.php/3705216 Переговоры об инструменте под названием convmv, который исправляет имена файлов. Это может быть полезно.
Iconv http://www.gnu.org/software/libiconv/ может конвертировать произвольный текст в разные наборы символов.
http://ozmm.org/posts/git_post_commit_for_profit.html Сообщает вам, как сделать фиксацию после фиксации, но больше Ruby. Похоже, вы просто добавляете script для выполнения в .git/hooks/post-commit, а git запускает его после совершения. Это может быть script, который даже запускает script в вашем репозитории git.
Для script я бы рекомендовал просто сканировать с помощью find, преобразовать имя файла в UTF-8, посмотреть, уже ли это имя, а если нет, переместите его.