There are several ways to set the GIT hash for heroku. I prefer setting this just before pushing the main branch to the heroku remote.
Also, I prefer to automate this with a `pre-push` hook.
One issue I ran into was that it was not straightforward to know if there is anything to push. Meaning, if the remote was up-to-date or not. This is important, as we don't want heroku deploying a version when there are no changes to be deployed (which it will if we set the APP_VERSION).
The simplest way to know if the remote was already up-to-date seemed to be to do a `--dry-run` of `git push`.
But of course that runs the hook again, so this is an endless loop situation.
It does not seem that git allows us to see the git argument on the hook. If it did, we could explicitly not run the hook on a dry run.
But there is a `--no-verify` option that bypasses the hooks, and can be used when we do our dry run.
Here is the complete script: