Feeds:
Posts
Comentários

Archive for 28 de novembro de 2008

Este é um pequeno guia para iniciantes, que já tenham alguma noção do que é um controle de versão, caso você ainda não saiba veja adefinição da Wikipédia sobre Sistema de Controle de versão e também a definição de Sistema de Controle de Versão Distribuído (Em Inglês) que é o caso do Bazaar.

Quando precisamos de um controle de versão?

Sempre que queremos manter o histórico de alterações de arquivos, sejam eles código fonte de programas ou até mesmo documentos (aquelas várias versões do seu trabalho de conclusão de curso) entre outros arquivos, também é possível manter versões de arquivos binários, como fotos programas executáveis entre outros, porém para estes últimos alguns recursos não são possíveis, tais como ver as diferenças entre o arquivo na revisão 5 e 6.

Mas qual ferramenta usar?

Bem, existem várias e depende do molde que você quer trabalhar, mas eu posso recomendar hoje 3 ferramentas, e vou listar em ordem da mais fácil para a mais difícil de usar (na minha opinião), são elas: Bazaar, Git e Mercurial.
Presando pela facilidade de instalação e uso mas com todos os recursos dos demais e até mais algumas opções, minha opção foi o Bazaar.

Vou partir do princípio que você sabe instalar um software em seu sistema operacional, bem como utilizar um shell (“Promt de comando” para usuários windows). Todos os meus exemplos são feitos no Linux utilizando o gnome-terminal, sendo que para Windows alguns comandos do sistema operacional podem ser diferentes, mas os comandos do Bazaar são iguais.

Instalação

O Bazaar está disponível oficialmente para uma série de sistemas operacionais e também em forma de código fonte que “teoricamente” pode ser compilado em qualquer plataforma que rode Python.

  • Linux: Se já não estiver instalado você pode facilmente encontrar em seu gerenciador de pacotes, geralmente o nome do pacote é “bzr” e não bazaar:
  • Windows Siga as instruções de instalação (Em inglês) aqui ou clique aqui para baixar o diretamente o instalador da versão 1.9.
  • Mac OS X: Siga as instruções aqui (Em inglês).
  • Para outras plataformas e instalação via código fonte, veja mais informações aqui e aqui (Em inglês).

Se apresentando para o Bazaar

Antes de começar a controlar versão de coisas é interessante colocar sua identificação no Bazaar, para que ele possa “assinar” suas alterações nos arquivos, normalmente é utilizado o nome e email como identificação, portanto em um promt utilizando seus próprios dados digite:

  $ bzr whoami "Alexandre da Silva <simpsomboy@gmail.com>"

o Bazaar vai criar um arquivo de configuração (ou atualizar se ele já existir) incluindo sua identificação. para verificar qual a identificação você está utilizando atualmente ignore o segundo parâmetro e ele exibirá as configurações atuais:

  $ bzr whoami
  Alexandre da Silva <simpsomboy@gmail.com>

Controlando a versão de arquivos

Agora vem a parte interessante, vamos controlar a versão de alguns arquivos, para isso vamos criar uma pasta/diretório onde ficarão estes arquivos:

  $ mkdir arquivos
  $ cd arquivos
  $ mkdir adicionais
  $ touch teste1.txt teste2.txt teste3.txt adicionais/teste4.txt teste5.txt

(Usuários do windows não possuem o comando touch, e devem usar o Windows Explorer ou outra ferramenta para criar alguns arquivos texto vazios)

Até agora temos apenas uma pasta e um punhado de arquivos, vamos colocá-los agora no controle de versão:

  $ bzr init
  Standalone tree (format: pack-0.92)
  Location:
    branch root: .

Aparentemente nada foi feito, porém o Bazaar inicializou o diretório atual como um “branch” que nada mais é do que um local onde ficarão registradas todas as alterações realizadas nos arquivo pertencentes a ele. No Bazaar um branch é um diretório.

o próximo passo é adicionar os arquivos ao branch:

  $ bzr add
  added adicionais
  added teste1.txt
  added teste2.txt
  added teste3.txt
  added teste5.txt
  added adicionais/teste4.txt

Agora o Bazaar conhece os arquivos que ele deve manter o histórico, então vamos criar nossa primeira “revisão” dos arquivos existentes. Pense em uma revisão como uma foto do estado atual dos arquivos.

  $ bzr commit -m "Primeira versão"
  Committing to: arquivos/
  added adicionais
  added teste1.txt
  added teste2.txt
  added teste3.txt
  added teste5.txt
  added adicionais/teste4.txt
  Committed revision 1.

Como o Bazaar é um controle de versão distribuído não é necessário conectar a um servidor para enviar as alterações, todo o histórico de todos os arquivos ficam guardados dentro de apenas um sub-diretório especial chamado “.bzr” que fica no diretório raíz do branch.

Alterando seus arquivos

Vamos fazer algumas alterações e armazenar (commit) o que foi feito para o nosso branch.
Edite o arquivo teste1.txt em seu editor favorito, depois verifique o que foi feito:

  $ bzr diff
  === modified file 'teste1.txt'
  --- teste1.txt    2008-11-28 22:39:16 +0000
  +++ teste1.txt    2008-11-28 22:43:09 +0000
  @@ -0,0 +1,1 @@
  +teste teste teste

Armazene seu trabalho no branch:

  $ bzr commit -m "Adicionada primeira linha no arquivo teste1.txt"
  Committing to: arquivos/
  modified teste1.txt
  Committed revision 2.

Verificando o Log de alterações

Você pode ver todo o histórico do que foi modificado e quem modificou observando o log de alterações:

  $ bzr log
  ------------------------------------------------------------
  revno: 2
  committer: Alexandre da Silva <alexandre@exatisistemas.com.br>
  branch nick: arquivos
  timestamp: Fri 2008-11-28 20:44:12 -0200
  message:
    Adicionada primeira linha no arquivo teste1.txt
  ------------------------------------------------------------
  revno: 1
  committer: Alexandre da Silva <alexandre@exatisistemas.com.br>
  branch nick: arquivos
  timestamp: Fri 2008-11-28 20:39:16 -0200
  message:
    Primeira versão

Publicando seu trabalho em um servidor sftp

Existem várias maneiras de publicar um branch do Bazaar, mas uma das mais fáceis é utilizar um servidor sftp, se você tiver acesso a um você pode publicar seu branch da seguinte forma:

  $ bzr push sftp://seu.usuario@seu.servidor/~/arquivos
  Created new branch.

Criando sua própria cópia de um branch existente

Para trabalhar com os arquivos de outra pessoa você deve obter sua própria cópia (branch) para que possa trabalhar com os arquivos localmente em seu computador:

  $ bzr branch sftp://seu.usuario@seu.servidor/~/arquivos arquivos-copia1
  Branched 2 revision(s).

O Bazaar vai fazer o download de todas as revisões dos arquivos contidos no branch, além de uma cópia de trabalho contendo o estado atual dos arquivos.

Atualizando seu branch a partir de um branch remoto já modificado

Enquanto você modifica seus arquivos, os outros usuários também podem modificar os arquivos deles, podendo ser inclusive os mesmos arquivos, e neste último caso se for alterada a mesma parte do arquivo, há grande chace de você ter que resolver alguns conflitos, mas o processo é bem simples, mas em grande parte dos casos o Bazaar faz todo o trabalho para nós. Para atualizar nosso branch (cópia de trabalho) que já foi alterada, com um branch remoto que também já pode ter sido alterado, utilizamos o comando merge:

  $ bzr merge
  Merging from remembered parent location sftp://seu.usuario@seu.servidor/~/arquivos/
   M  teste2.txt
  All changes applied successfully.

Agora verificamos o que foi alterado:

  $ bzr diff
  === modified file 'teste2.txt'
  --- teste2.txt    2008-11-28 22:39:16 +0000
  +++ teste2.txt    2008-11-28 22:59:10 +0000
  @@ -0,0 +1,1 @@
  +editado editado editado

Estamos contentes com as alterações, vamos dar o nosso commit (armazenar nossas alterações) e em seguida publicar devolta para o branch remoto

  $ bzr commit -m "Merge a partir do branch principal"
  Committing to: arquivos-copia1/
  modified teste2.txt
  Committed revision 4.

  $ bzr push sftp://seu.usuario@seu.servidor/~/arquivos
  Pushed up to revision 4.

Como aprender mais

  1. Eventualmente estarei postando mais informações relacionadas aqui no blog.
  2. O Site oficial oferece uma ótima documentação, porém encontra-se em sua maioria em Inglês. http://doc.bazaar-vcs.org/latest/en/user-guide/index.html
  3. O próprio Bazaar pode lhe dizer o que fazer em alguns casos, para tanto consulte a ajuda de linha de comando:

Informações sobre a linha de comando do Bazaar

  $ bzr help

Informações sobre vários comandos do Bazaar

  $ bzr help commands

Informações detalhadas sobre um comando específico

  $ bzr help [comando]

Este artigo foi fortemente inspirado e pode ser considerado uma tradução parcial de: http://doc.bazaar-vcs.org/latest/en/mini-tutorial/index.html

Anúncios

Read Full Post »