Я использую Mercurial в качестве своей системы SCM, а также для развертывания. Это просто вопрос клонирования репозитория из другого, и тогда обновление, извлечение или извлечение обновят его.
Я использую несколько экземпляров репозитория - один на сервере разработки, один (или более, в зависимости от обстоятельств) на моем локальном компьютере, один на рабочем сервере и один «главный» репозиторий, который доступен для большого Интернета (хотя только по SSH).
Единственное, что он не делает, - это автоматически обновляет базу данных, если она изменяется, но с входящими хуками я, вероятно, мог бы сделать это тоже.