Como versionar projetos Django com o Mercurial – Parte 2

Dando continuidade ao post Como versionar projetos Django com o Mercurial, vamos dar uma pincelada nos funcionamentos básicos do Mercurial.

hg? Mas não era Mercurial?

Mercury em português significa mercúrio (nenhuma novidade até aqui), que é um elemento químico com o símbolo Hg e o número atômico 80 (assim disse a Wikipedia (:  ).  É devido a isso que você utilizará o Mercurial em linha de comando através de comandos iniciados por hg.

Antes de iniciarmos, vamos dizer ao Mercurial quem nós somos. Abra o arquivo .hgrc do seu home:

$ vim ~/.hgrc

É fundamental que nossos commits estejam marcados com nosso nome, e um e-mail para contato. Vamos escrever estas duas informações neste arquivo:

[ui]
username = seu nome <[email protected]>

Salve o arquivo… e estamos prontos para iniciar.

Primeiros passos…

Os passos que vou exemplificar aqui não são muito diferentes dos que você encontrará na página oficial do Mercurial. Preguiça minha? Talvez… mas você verá que usar o Mercurial é extremamente simples! As dificuldades são as exceções do dia-à-dia.

Para deixar o exemplo mais interessante, vamos utilizar o virtualenv. Dúvidas? Confira o post Python, Django e virtualenv e visualize aonde pretendemos chegar:

$ cd ˜/Projetos/
$ virtualenv DjangoComHG --no-site-packages
$ cd DjangoComHG

Agora sim, vamos criar um projeto através da seguinte expressão:

$ hg init django-com-hg

Projeto criado… vamos partir para as tarefas mais comuns no Mercurial.

Altere, adicione e “comite”

O Mercurial é DVCS, isto quer dizer que, quando você clonar um repositório remoto você terá uma cópia exata dele em seu computador. Logo, as alterações que você “persistir” estarão disponíveis apenas na sua cópia local. Pode parecer um pouco confuso, mas com o tempo faz todo o sentido.

Para o primeiro commit (persistir nossas alterações localmente) escreva um arquivo .hgignore (saiba mais do que se trata) e um arquivo README:

$ cd django-com-hg/
$ ls -a

.hg     .hgignore     README

A pasta .hg na verdade é quem vai identificar e armazenar todas as informações do nosso projeto. Sem ela, você deixa de ter o controle sobre as versões dos arquivos e subpastas do projeto.

Execute o comando hg status e veja o que aparece… acredito que o resultado seja auto-sugestivo. O Mercurial ainda não sabe o que fazer com os arquivos no projeto, portanto diremos a ele que queremos versionar estes arquivos:

$ hg add .hgignore README

Uma nova execução do hg status vai apontar que os arquivos foram marcados para adição, porém, ainda não foram adicionados. Você vai confirmar está operação através do comando commit:

$ hg commit -m "Primeiro commit com .hgignore"

O parâmetro -m serve para passarmos uma mensagem de descrição do commit que estamos fazendo. Isto facilita na leitura do log de commits realizados:

$ hg log

Estes serão os comandos que provavelmente você usará constantemente enquanto desenvolve.

Compartilhando as suas produções

Se você ainda não tem uma conta no Bitbucket, essa é uma grande oportunidade para fazer uma.

Vamos criar um repositório para praticarmos o comando push. No Bitbucket:

  • Eu vou dar o nome de “post-django-com-hg” ao repositório, fique a vontade para dar o nome que você desejar;
  • Escolha o Python como linguagem;
  • Coloque uma pequena descrição;
  • Eu vou marcar a opção Issue tracking, caso haja algum problema com o código e vocês queiram sugerir melhorias.

Confira o resultado.

No repositório local vamos utilizar o comando push com o endereço do repositório no Bitbucket. Isso enviará todas as alterações que persistidas em nosso repositório local para o repositório remoto, mesclando-as com as contribuições de outros usuários envolvidos no projeto:

$ hg push https://bitbucket.org/kplaube/post-django-com-hg

Lembre-se de mudar o endereço acima para o endereço do seu repositório no Bitbucket. Visite a página do seu repositório e veja o que aconteceu… bacana, não?

Mas dessa forma, teremos que sempre executar o comando push informando o endereço do repositório. Vamos deixar esta tarefa mais simples editando o arquivo hgrc dentro da pasta .hg do projeto:

$ cd ~/Projetos/DjangoComHG/django-com-hg/
$ vim .hg/hgrc

Coloque o seguinte:

[paths]
default = https://[email protected]/kplaube/post-django-com-hg

Lembre-se de mudar o endereço acima para o endereço do seu repositório no Bitbucket.

Pronto! Quando você for “pushear” não precisará mais informar o endereço do repositório remoto.

Altere alguns arquivos… commit. Adicione alguns arquivos… commit. Ao final do dia, dê um push e deixe o resto da equipe saber o que você fez 😉

Referências

No próximo post, vamos concluir a trilogia mostrando uma forma bacana de utilizar o Mercurial para versionar seus projetos Django.

Até a próxima…

Fonte: Blog Klaus Laube

Klaus Peter Laube

Mais artigos deste autor »

Tecnólogo em Análise e Desenvolvimento de Sistemas pelo Centro Universitário de Jaraguá do Sul (UNERJ). Desenvolvedor Web de longa data, apaixonado por Python e defensor dos padrões Web. Escreve quando pode no http://www.klauslaube.com.br.


2 Comentários

Fred Chevitarese
1

Opa!
Bacana seu artigo! Sei que o que vou dizer não tem nada a ver contigo, mas existe um bug muito chato que todas as vezes que entro aqui no site, da crash no meu FF, Chrome ou IE.
É um bug em alguma coisa em flash.
Como desenvolvo alguns aplicativos utilizando Flex, o flashbug loga os erros pra mim.
Não sei se interessa à alguém, mas aqui vai o log 😉
TypeError: Error #1009: Não é possível acessar uma propriedade ou um método de uma referência de objeto nula.
at com.google.analytics.campaign::CampaignTracker/_addIfNotEmpty()
at com.google.analytics.campaign::CampaignTracker/toTrackerString()
at com.google.analytics.campaign::CampaignManager/getCampaignInformation()
at com.google.analytics.v4::Tracker/_initData()
at com.google.analytics.v4::Tracker()
at com.google.analytics.components::FlashTracker/_trackerFactory()
at com.google.analytics.components::FlashTracker/_factory()
Abraços!

Deixe seu comentário

Seu endereço de e-mail não será publicado. Campos com * são obrigatórios!