The first two steps you described:
hg commit -m <message> hg push
required in accordance with the fact that commits are kept completely separate from the server in Mercurial (and most other DVCS). You can write a binding after commit to push after each commit, but this is not recommended as it prevents you from fixing simple errors during commit and before clicking.
Since you are trying to upgrade on a "server", I assume that you are running a version of the code in your repository on the server. I guess this is because, as a rule, the server will simply act as the main repository for you and your developers to access (as well as for backups, etc.) and does not need an explicit hg update .
Assuming you are executing the code on the server, you can try and replace push and update with this command:
hg pull <path to development repo> -u
which will pull from your local repo and then automatically update. Depending on your server configuration, it may be difficult to get the path to your local repo.
dls
source share