quarta-feira, 10 de julho de 2013

Web2py, Mercurial e Bitbucket: versionando suas aplicações

O web2py inclui suporte ao Mercurial para versionamento de suas aplicações diretamente na interface administrativa. O recurso permite ações simples como commits, reverts e listagem do histórico de atualizações sem precisar sair do ambiente de desenvolvimento web. Isso se torna particularmente útil quando você quer salvar alterações em aplicações que estão hospedadas em um servidor sem precisar se conectar via SSH. 
Neste artigo, vou mostrar como configurar este recurso para hospedar o seu código em um servidor público.

 

Configurando o Mercurial

Se o seu computador ainda não possui o Mercurial instalado, instale-o. O pacote mercurial está disponível nos repositórios das principais distribuições Linux. Também é possível instalar do código-fonte.
Para verificar se a instalação foi bem-sucedida, execute hg -v no terminal.
Depois disso, você já deve ser capaz de fazer commits pelo web2py. Para conferir, acesse o menu Versioning de uma aplicação qualquer e verifique se aparece uma tela semelhante a esta:

Basta escrever uma mensagem e clicar em Commit que o web2py se encarrega de inicializar um repositório local do mercurial tendo como base a pasta da aplicação em /web2py/applications/<nome da aplicação>. Ou seja, cada aplicação versionada será um repositório diferente.
Se o seu objetivo é simplesmente manter um histórico das suas alterações com backup local, isto é tudo que vai precisar.
Para explorar mais recursos, como backup remoto e compartilhamento público, é preciso criar uma conta em um servidor de repositórios públicos que tenha suporte ao Mercurial. Neste artigo, vou utilizar o popular Bitbucket.

 

 Configurando o Bitbucket

Não vou entrar em detalhes sobre como se cadastrar, já que isso é trivial. No entanto, vale a pena comentar que caso você já possua uma conta no GitHub, outro servidor bastante utilizado, o Bitbucket facilita a sua vida e permite que você crie sua conta a partir do GitHub, inclusive com a possibilidade de importar repositórios daquele serviço.
Com sua conta devidamente criada, basta criar um novo repositório no Bitbucket clicando no botão Create no topo da tela. O formulário de cadastro do repositório:

Recomendo definir o nome do repositório igual ao nome da aplicação no web2py para conveniência.
Caso queira que este repositório seja visível para outras pessoas, desmarque o checkbox Access level.
Não esqueça de marcar o tipo do repositório como Mercurial.

 

 Sincronize os Repositórios

Existem duas maneiras de se comunicar com o Bitbucket: https ou ssh.
HTTPS:
Se você escolheu https, precisará digitar a senha definida no Bitbucket sempre que realizar um push.
Edite ou crie o arquivo /web2py/applications/<nome da aplicação>/.hg/hgrc conforme o modelo:
[paths]
default = https://usuario@bitbucket.org/usuario/repositorio
Obviamente, preencha com os dados do seu usuário e repositório.
SSH:
Se escolheu ssh, não precisará de senha para realizar push's mas é preciso gerar um conjunto de chaves assimétricas para se autenticar.
Caso você não possua ou não saiba como gerar as chaves, este artigo do próprio Bitbucket explica passo-a-passo como proceder.
Como o próprio artigo já informa, depois de gerar as chaves é preciso editar o arquivo /web2py/applications/<nome da aplicação>/.hg/hgrc como abaixo:
[paths]
default = ssh://hg@bitbucket.org/usuario/repositorio
[ui]
ssh = ssh -C
Preencha com os dados do seu usuário e repositório.

Agora, basta acessar a pasta da sua aplicação do web2py no terminal do Linux e digitar o comando:
jonathan@linux:~/Projetos/web2py/applications/myapp> hg push

Finalizando

Agora é só fazer os commits sempre que modificar a aplicação e o push para sincronizar com o repositório remoto.
Se você não está familiarizado com o Mercurial, ou com o versionamento em si. Este guia é uma boa introdução. Recomendo que crie uma aplicação de teste e não tenha medo de experimentar os recursos desta ferramenta poderosa.
Embora este artigo se baseie no ambiente para Linux, deve ser possível obter o mesmo resultado para Windows sem grandes problemas. Lembre-se de que a versão para Windows do web2py não inclui o Mercurial por padrão. Neste caso, instalar o mercurial para Python e copiar a biblioteca em site-packages deve ser suficiente para fazer funcionar.
Também é possível compartilhar sua aplicação do web2py no GitHub através do Hg-Git.

Nenhum comentário:

Postar um comentário