Estrutura do arquivo de repositório no servidor

2

Para cada servidor público, temos três estágios: desenvolvimento, teste e produção. Cada um desses estágios é um servidor da web. Estou usando ramificações nomeadas no Mercurial para complementar esse processo. O truque é empurrar as versões corretas das coisas para os servidores corretos, ou seja, a ramificação de teste seria enviada para o servidor de teste quando o script para publicar o teste fosse executado.

Eu tenho os ganchos e todos os pequenos detalhes funcionaram. A parte que não tenho certeza é a estrutura do arquivo Mercurial. Eu quero implementar o processo de publicação usando RSync e para isso eu preciso de uma pasta local para sincronizar, Esta pasta pode ser a que eu criei o repositório no servidor, mas o que eu preciso confirmar é se a versão do servidor do repositório pode ser atual para qualquer ramo que eu quero.

Ou seja, eu crio um repositório no teste

cd test
hg init
touch sample
hg add ./*
hg commit -m "whatever" -u someowner

Agora vamos dizer que faço um monte de trabalho a partir de uma estação de trabalho e confirmo alterações no repositório que criam duas ramificações nomeadas test e prod . O que eu estou preocupado é com o diretório de teste real. Posso fazer esse diretório conter a versão mais recente de uma certa ramificação nomeada (no servidor em que fiz a inicialização acima) e não prejudicar o próprio repositório?

Considere isso no contexto em que sou novo no Mercurial.

    
por Joshua Enfield 13.07.2010 / 18:28

1 resposta

2

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ê!

    
por 23.12.2011 / 12:11