Se eu entendi o cenário e a pergunta certa, a resposta é "sim".
Deixe-me explicar o que eu acho que você está perguntando: você tem um repositório do Mercurial hospedado em algum lugar e você tem três ramificações nomeadas neste repositório. Suponho que eles sejam denominados default
, test
e prod
. Desenvolvedores empurram mudanças para o repositório.
Você deseja publicar o código em três servidores da Web diferentes, vamos chamá-los de web-default
, web-test
e web-prod
. Você quer usar rsync
para isso.
Isso tudo é uma configuração muito razoável. A questão principal é se você pode executar
$ hg update test
$ rsync -av --exclude .hg . web-test:/var/www
no repositório do servidor e se isso afetará futuros envios. A resposta é "sim", você pode atualizar a cópia de trabalho para qualquer revisão que você quiser - changesets que são enviados para o servidor não são afetados por isso de qualquer forma.
Então você poderia fazer três ganchos no servidor, algo assim:
[hooks]
changegroup.default = hg update default && rsync ... web-default:/var/www
changegroup.test = hg update test && rsync ... web-test:/var/www
changegroup.prod = hg update prod && rsync ... web-prod:/var/www
Isso publicaria a ponta de cada ramificação no servidor da web correspondente sempre que alguém acessasse o repositório. Espero que ajude você!