What i would like now is to have a mean of controlling the push of the other users, like an "allow push" function if I accept the changes.
How will you know whether to accept changes? The only practical way to review changes is after somehow getting them into your (personal) repository.
If your fellow contributors are trusted team members, you can instruct them to develop and push in branches; only you are allowed to merge their contributions to the default
branch (or to whichever branch you delegate as "clean").
A more robust alternative would be to have two central repositories, one that allows pushes from everyone and a second one that only you can push to: Users push to repo1
; you review and push to repo2
as appropriate; users pull from repo2
. Mercurial makes this easy by allowing you to define separate paths default-push
and default
(which would then only be used for pulling).
A third way is to pull from the contributors instead of letting them push, as @Stephen suggests. This is how repositories hosted on bitbucket work, so you could consider hosting your project there if this model appeals to you.