quarta-feira, 20 de abril de 2011

Usando Mercurial com Google Code

Como todos devem saber, o Google Code é mais uma solução de compartilhamento de código existente por aí né? Existem tantos: Freshmeat, SourceForge, Gnu Savannah e até o da Microsoft, chamado CodePlex. Minha intenção com este post é só dar uma dica para aqueles que porventura tenham dificuldade em usar o Mercurial com ele. Eu encontrei alguns probleminhas mas googleando um pouco consegui resolver.

Então, resolvi juntar tudo num post só e mandar aki no blog para vocês aproveitarem. Então, aproveitem!

Dica: Mercurial com Google Code

Nem preciso falar muito sobre o Mercurial né? No meu post anterior, intitulado "Mercurial Hg - Controlando as Versões do seu Software", mostrei como utilizar a maioria dos recursos mais comuns da ferramenta, de uma maneira bem prática. Agora, a minha idéia aqui é mostrar como configurar o Mercurial para que você possa usufruir da infra-estrutura do Google Code para gerenciar seu projeto. Para prosseguir, vou intuir que você têm o Mercurial instalado em sua máquina...


Trabalhando no meu projeto, IRCpy

Configurando um usuário padrão

Primeiramente, precisamos configurar o usuário que será responsável por confirmar as alterações no código do repositório. No Windows vc pode criar o arquivo .hgrc na pasta %USERPROFILE% e no Linux, você pode colocar na $HOME.

Depois de criado, você adiciona a informação do usuário:

[ui]
username = José da Silva <jose.da.silva@gmail.com>

Você pode adicionar mais informações se quiser, mas dependendo do que for colocar, é interessante deixar para fazê-lo no hgrc do projeto.

Iniciando o Projeto

Caso você não tenha criado ainda um projeto no Google Code, visite a página de criação do projeto, preencha os dados da maneira que achar melhor e escolha o Mercurial na opção Version Control System.

Agora que criamos o projeto, vamos iniciar um repositório Mercurial em uma pasta qualquer em nossa máquina. Para isso, primeiramente você deve entrar na opção Source do seu projeto, escolher a opção Checkout e copiar a linha do mercurial no terminal.

Supondo que você criou um projeto com o nome MeuProjetoLindo, provavelmente a linha do mercurial será assim:

hg clone https://meuprojetolindo.googlecode.com/hg/ MeuProjetoLindo

Configurando o projeto

Depois de criar o repositório, todas as operações que você for executar no mesmo necessitarão de seu nome de usuário e uma senha para o repositório. Seu usuário é a conta do google vinculada ao projeto. A senha você consegue ao ir na mesma opção Checkout, dentro de Source, e clicar ali na opção para gerar sua senha do googlecode.com. Aqui você não usa a senha da sua conta do google por razões de segurança, mas isso é possível de mudar.

Digamos que você criou alguns arquivos e quer enviar ao seu repositório do google. Você executará os seguintes comandos para commitar e enviar os arquivos:

hg add *
hg commit -m "Hello Google Code com Mercurial"
hg push https://jose.da.silva:senha@meuprojetolindo.googlecode.com/hg/

Para simplificar a sua vida em não precisar ficar digitando o enorme, epic-level colossal link https://jose.da.silva:senha@meuprojetolindo.googlecode.com/hg/ cada vez que tiver de executar alguma operação no repositório remoto, você pode salvar essa informação no arquivo de configuração do projeto.

Abra o arquivo .hg/hgrc dentro da pasta do seu projeto e adicione as seguintes linhas no final do arquivo:

[paths]
default = https://jose.da.silva:senha@meuprojetolindo.googlecode.com/hg/

Depois disso, você só precisará chamar hg push para enviar e hg pull para trazer as mudanças do repositório do google para seu repositório local.

Informações de configuração adicionais

Ocasionalmente, pode ocorrer de aparecer uma mensagem avisando sobre certificados. Isso acontece porque estamos usando uma conexão HTTP SSL para comunicarmos com o servidor do Google. Para evitar que esta mensagem apareça (e caso haja uma tentativa de interceptação do seu tráfego, ser avisado disso) você pode adicionar duas opções no arquivo .hg/hgrc do seu projeto que registrarão a impressão digital do repositório do google.

Primeiramente, você vai copiar o fingerprint do servidor e o endereço do servidor, que apareceram no terminal para você quando se conectou a primeira vez, e vai salvar no seguinte formato:

[hostfingerprints]
meuprojetolindo.googlecode.com = 34:4b:00:e7:e3:36:df:0d:5a:1f:20:c0:4c:98:46:90:4a:9e:05:d9

Isso é o suficiente para sumir a mensagem do certificado. No entanto, se de alguma forma tentarem interceptar o seu tráfego fazendo um ataque de homem-ao-meio, a impressão digital do site será diferente da impressão que você salvou no arquivo de configuração, e o Mercurial irá lhe avisar.

Conclusão

Não é difícil setar o Mercurial para funcionar com o Google Code. No fundo, só um pequeno problema com arquivos de configuração mesmo. Agora, se você quer mesmo começar a usar o Google Code com todos os seus recursos ou começar a desenvolver em conjunto com outras pessoas, recomendo você ler esse material da Wiki de um projeto hospedado no Google Code: JUG Events: Mercurial Repository Guidelines.

Abração, e bom desenvolvimento para vocês!

Fontes:

How to checkout the source code from Mercurial
[PATCH 2 of 2] cacert: improve error report when web.cacert file does not exist
Como fazer upload de projeto com mercurial em GoogleCode?
Configuration files for Mercurial