How to propagate renames back through history?
Frequently I find myself wanting to clean up renames from history. Currently, I'm doing this manually. I either start from the root and go forwards in time, or start from the HEAD and go backwards in time. I find the previous commit that added (or renamed) a file and change the filename to that of the following rename. If all goes well, Git automatically updates any following commits modifying the file and removes the following rename.
Doing this manually on a non-trivial repo can get quite laborious. If the file was renamed multiple times, one has to repeat the steps multiple times. For single files it's doable enough with git log and git rebase. It becomes really laborious when cleaning up renames of entire folders. Now, one has to go back to every commit that added a file to that folder and change it. The work required essentially grows one-to-many instead of just one-to-one. More manual work also increases the chances for screwing up your repo by making a mistake somewhere.
It would be great if there was a tool that could handle this automatically. Probably it wouldn't be able to update other files or commit messages referencing the old filename which would still need to be done manually.
Could git-filter-repo support this? Are there any other tools that can do this?