Utilizando o Bazaar VCS

Estou utilizando o Bazaar VCS a algumas semanas, tanto para avaliar sua eficácia quanto para implementar em projetos que já estou trabalhando. Na minha atuação no Projeto GNU, sempre utilizei o CVS e acostumei com sua maneira de ser. Tinha coisas que não gostava, como o fato de ser apenas cliente servidor. Em outros projetos eu resolvi adotar o Subversion (SVN) e até então era meu sistema de controle de versão favorito.

Com o fato da distribuição Ubuntu utilizar amplamente o Bazaar, fiquei bastante curioso em testá-lo e ver quais eram as principais diferenças com o SVN. Logo no início já gostei de alguns pontos, como:

  1. O Bazaar é todo feito em Python;
  2. Tem o apoio da Canonical e é utilizado pelo Ubuntu no Launchpad;
  3. Possui praticamente todos os recursos do SVN e CVS, só que alguns pontos são melhores;
  4. Pode ser utilizado no esquema cliente-servidor ou apenas localmente no seu projeto, sem precisar de servidor;
  5. Possui vários plugins que facilitam o trabalho e administração de código;
  6. É possível interagir facilmente com as libs Python e escrever suas próprias extensões;
  7. É possível integrar o Trac;
  8. Possui o Olive, um frontend gráfico para o Bazaar e fácil de mexer;
  9. Ao usar remotamente, é possível escolher qual protocolo de transferência, como ssh, sftp, http, ftp, http, etc;
  10. A maioria das distribuições já têm o pacote para o Bazaar, assim como plataformas Macintosh e Windows.

Mas também tem alguns pontos negativos, como ainda não ter suporte para a maioria dos IDEs. Eu mesmo não consegui fazer o Emacs funcionar corretamente com o Bazaar, mas confesso que não testei todos os módulos elisp que encontrei na internet.

O seu uso é bastante simples, veja:

anderson@yoda:~/tmp/teste$ touch arquivo1.txt
anderson@yoda:~/tmp/teste$ touch arquivo2.txt
anderson@yoda:~/tmp/teste$ touch arquivo3.txt
anderson@yoda:~/tmp/teste$ bzr init
anderson@yoda:~/tmp/teste$ bzr add
added arquivo1.txt
added arquivo2.txt
added arquivo3.txt
anderson@yoda:~/tmp/teste$ bzr commit -m ‘Primeiro import’
Committing to: /home/anderson/tmp/teste/
added arquivo1.txt
added arquivo2.txt
added arquivo3.txt

Committed revision 1.

Explicando: Criei um diretório (teste), dentro dele criei 3 arquivos vazios. Dentro do diretório, dei um bzr init para criar o repositório, depois adicionei todo conteúdo do diretório (bzr add) e por último, um commit para registrar como primeiro import ao sistema de controle de versões.

Dessa forma é possível trabalhar localmente com um projeto e tê-lo dentro de um sistema de controle de versões. O resto é praticamente idêntico aos outros VCS, sempre que finalizar uma alteração basta dar um commit, veja:

anderson@yoda:~/tmp/teste$ echo “Alteracao em um arquivo” >> arquivo1.txt
anderson@yoda:~/tmp/teste$ bzr status
modified:
arquivo1.txt
anderson@yoda:~/tmp/teste$ bzr diff arquivo1.txt
=== modified file ‘arquivo1.txt’
— arquivo1.txt        2008-04-24 23:05:14 +0000
+++ arquivo1.txt        2008-04-24 23:09:51 +0000
@@ -0,0 +1,1 @@
+Alteracao em um arquivo

E por último, um commit:

anderson@yoda:~/tmp/teste$ bzr commit -m “Mudancas na estrutura do arquivo1.txt”
Committing to: /home/anderson/tmp/teste/
modified arquivo1.txt
Committed revision 2.

Veja o log de alterações:

anderson@yoda:~/tmp/teste$ bzr log
————————————————————
revno: 2
committer: Christiano Anderson <anderson@gnu.org>
branch nick: teste
timestamp: Thu 2008-04-24 20:10:24 -0300
message:
Mudancas na estrutura do arquivo1.txt
————————————————————
revno: 1
committer: Christiano Anderson <anderson@gnu.org>
branch nick: teste
timestamp: Thu 2008-04-24 20:05:14 -0300
message:
Primeiro import

Se quiser colocar o conteúdo desse repositório em algum servidor para que outras pessoas trabalhem, mas utilizando o sftp, basta:

bzr push sftp://usuario@servidor/path/para/repositorio

Depois para outras pessoas fazerem o checkout:

bzr co sftp://usuario@servidor/path/para/repositorio

e a partir daí trabalhar normamente com os bzr update e bzr commit para mandar novamente para o servidor. É possível também fazer commits offline de pois fazer um merge com o branch do servidor, para isso basta um

bzr commit –local

Fica a dica! :-)

Gostou deste post? Assine gratuitamente o conteúdo e receba as atualizações por e-mail.

E-mail:




View Comments ao post “Utilizando o Bazaar VCS”

  1. Og Maciel says:

    Epiphany 2.22 Linux

    Beleza Christiano?

    Olha, eu vejo o pessoal da Canonical fazendo uma propaganda louca sobre o bzr, mas apesar de alguns poucos recursos diferentes do svn, ainda nao vi um motivo que seja incentivo suficiente para uma companhia simplesmente mudar de vcs. Os seus exemplos mostram um fluxo de trabalho comum no dia a dia de um programador, mas teria como voce adicionar alguns passos que mostrem porque o bzr vale a pena?

    Grande abraco,

    Og

  2. Walter Cruz says:

    Unknown Linux

    hehee, todo mundo contra o svn :D

  3. semente says:

    Epiphany 2.20 Linux

    Opa Christiano! Mais um ponto: o Bazaar agora é um Projeto oficial da GNU também! ;-)

    Og, tudo bem? Então, o fato do Bazaar ser descentralizado é uma grande vantagem. Poder dar commits e trabalhar offline é bastante interessante!

  4. Firefox 3.0b5 Linux

    Og, obrigado pela sua mensagem. Foi justamente a propaganda da Canonical que me despertou a curiosidade em testar o Bazaar. Olhando de forma geral, ele é igual a quase todos os outros VCS (CVS, GIT, SVN, etc). O que gostei do Bazaar é a facilidade de trabalhar de forma descentralizada, além da facilidade em criar extensões em Python. Sim, entendo que o SVN tem suas bibliotecas (com bindings em várias linguagens) que também permitem uma certa facilidade, mas isso no Bazaar é mais simples para quem prefere desenvolver em Python. Abraços!

  5. WordPress 2.5.1 XML-RPC

    [...] publiquei nesse post, o Bazaar tem alguns recursos que facilitam muito minha vida. Além de ter outros detalhes que me [...]

  6. WordPress 2.6.2 XML-RPC

    [...] relacionado: Utilizando o Bazaar VCS [...]

Deixe um comentário

blog comments powered by Disqus
Get Adobe Flash playerPlugin by wpburn.com wordpress themes