Не знаю как насчет git, но с меркуриалом такое можно сделать. Нужно установить меркуриал-сервер и добавить к репозиторию на сервере хук, таким образом при проталкивании коммитов на сервер будет вызываться этот хук, который будет обновлять рабочую копию на сервере из этого же репозитория.
У меня на работе таким образом реализован бекап репозитория на битбакет. После того как кто-то сделает пуш на сервер эти изменения проталкиваются хуком дальше на битбакет.