joeyh, why does #git when pushing to a remote helper, first "list" the remote, then send the helper a "push", and only then notice if there's a non-fast-forward and claim the push has failed?
This seems to mean every remote helper has to detect non-fast-forward pushes and reject them, redundantly to git's own detection of the same thing.
(See for example git-remote-gcrypt documenting this as "A longstanding bug is that every git push effectively has a --force.")