sauloarruda.eti.br

…revirando até chegar do outro lado…

April 1st, 2010

Começamos um novo projeto na Agence esta semana e decidimos usar o Git na máquina de desenvolvedor e SVN como repositório central. A idéia é facilitar o desenvolvimento local usando branches para cada funcionalidade desenvolvida e enviar para o repositório central (SVN) ao término do seu trabalho. Temos também a vantagem de poder compartilhar repositórios locais como já comentado aqui.

Para que isso seja possível, você usará o comando git-svn, que já vem na instalação do git para MacOSX mas, não está no PATH do seu sistema. Para usá-lo você deve incluir o diretório /usr/local/git/libexec/git-core/ no PATH. Para fazer isso, coloque a linha abaixo no final do seu arquivo ~/.bash_profile:

export PATH=$PATH:/usr/local/git/libexec/git-core/

Se você usa linux, o apt-get (debians like) ou yum (red hat like) tem os pacotes para instalação.

Para começar, faça o clone do seu repositório do SVN usando o comando:

$ git-svn clone {endereço do repositório SVN}

Se seu repositório for autenticado ele vai pedir usuário e senha sem grandes complicações. Após isso, basta seguir a sequência básica de uso:

1. Crie um branch para trabalhar em sua funcionalidade:

$ git checkout -b {nome da sua funcionalidade/estória/caso de uso/ticket/etc...}

2. Escreva seu código e faça commit no seu repositório local (você pode fazer o commit várias vezes antes de terminar o trabalho, inclusive, recomendo que você faça isso):

$ git commit -am "sua mensagem do commit"

3. Quanto terminar o desenvolvimento (não esqueça de comitar), faça checkout no branch master:

$ git checkout master

4. Faça o merge do seu branch com o master (o parâmetro –squash transforma todos os commits do seu branch em apenas um commit, bem legal):

$ git merge --squash {nome da sua funcionalidade/estória/caso de uso/ticket/etc...}

5. Comite no branch master:

$ git commit -am "sua mensagem do commit"

6. Envie para o SVN:

$ git-svn dcommit

Para manter sua cópia de trabalho atualizada use o comando:

$ git-svn rebase

Não tive problemas até o momento com essa abordagem. Algumas pessoas questionaram o motivo de criar um branch para cada funcionalidade. Eu considero isso muito importante quando você volta e meia tem que fazer algum ajuste em outra coisa no sistema bem no meio do desenvolvimento. Com isso, basta você criar outro branch, fazer suas alterações e comitar no SVN, não influenciando no trabalho que você ainda está fazendo. Pra mim, no dia-a-dia essa é a maior vantagem do uso do git.

Este artigo foi inspirado/baseado nas referências abaixo:

August 20th, 2008

Dia 16 de Agosto aconteceu o 15˚ Debian Day em Campo Grande/MS na UFMS. O Evento foi organizado pelo pessoal do Debian MS e contou com a presença de cerca de 400 pessoas. Foram realizadas palestras sobre Linux, Java, Python, PHP, entre outras tecnologias em um evento bastante eclético e democrático.

Novamente parabéns ao pessoal do Debian MS pela organização!