I think it doesn’t really make sense. Because you can’t “squash” one commit. squash is taking multiple commits and making them one.
When you do a “squash merge” you are really saying “squash all the commits that are on this branch and not the target” then merge.
So you can’t “squash a merge commit” you need at least one additional commit to squash in.
You seem to be making this very complex. But it really isn’t. Yes, git doesn’t track renames. So you are working around it by splitting your operation into 2 commits.
This way 1 is always considered a rename and 2 is just a regular file change with the same path. You may also consider tweaking the default rename detection threshold with flags like
--find-renamesor options likediff.renameLimit.Would it be nice if Git tracked renames? Probably. But that isn’t how the data model works so it is unlikely to happen soon. But maybe they could add some metadata.