Controle de versões Parte III – DVCS

DVCS
Este post faz parte da série Controle de versões. Leia também os outros posts da série:

No último post foi discutido sobre os primeiros sistemas de controle de versões (CVS) que possuíam uma arquitetura cliente-servidor, suas vantagens e desvantagens. Essa tecnologia vem aos poucos sendo substituída por uma nova geração de sistemas de controle de versões, chamada de DVCS – Distributed Version Control System, em tradução livre, sistemas de controle de versão distribuídos.

 

Segundo Andrew Tanenbaum, um sistema distribuído se define como uma coleção de computadores independentes que se apresenta ao usuário como um sistema único e consistente. Em outras palavras, em um sistema distribuído não existe a definição de um computador central que atua como servidor. Todos os computadores são, ao mesmo tempo, cliente e servidor.

 

Existem vários sistemas DVCS e os dois projetos de código aberto mais conhecidos são Mercurial e Git, sendo este último mais popular por ter sido desenvolvido por Linus Torvalds, o qual será detalhado neste post.

 

As principais vantagens são:

 

  • Gratuito;
  • Rápido;
  • Desenvolvimento distribuído;
  • Permite desenvolver sem estar conectado na rede;
  • Excelente documentação online;
  • Criar branches é fácil e rápido.

 

 

As principais desvantagens são:

 

  • Mais complexo comparado a CVS;
  • Interface gráfica ainda em desenvolvimento.

 

 

No dia a dia isso se resume a um maior esforço para dominar a ferramenta, mas, em contrapartida, o sistema oferece uma maior flexibilidade e versatilidade. Um sistema DVCS permite cada desenvolvedor ter uma cópia local de todo o histórico dos arquivos, acarretando em uma maior autonomia para o desenvolvedor. Isso é necessário principalmente em equipes que trabalham no código em paralelo. Uma vez que cada usuário tem uma cópia local, este pode desenvolver normalmente e salvar todas as modificações mesmo não estando conectado em rede, sendo necessário apenas no momento de enviar as alterações.

 

Os comandos básicos são:

 

  • git add – Dentre outras funções, esse comando adiciona um arquivo em uma lista de arquivos a ser monitorado. Também funciona para salvar o estado de um arquivo que está sendo monitorado (stage);
  • git commit – Cria um ponto de referência com o estado atual de todos os arquivos;
  • git rm – Remove um arquivo da lista de arquivos a serem monitorados;
  • git status – Exibe o status dos arquivos (não monitorados, modificados e não salvos, salvos e prontos para commit, etc);
  • git branch – Cria ou muda de ramo de desenvolvimento. Também serve para listar todos os ramos existentes;
  • git push – Envia as modificações para o servidor;
  • git pull – Busca modificações do servidor.

 

 

Como mencionado, o git é uma ferramenta muito versátil e possibilita diversas maneiras de como organizar o versionamento e a ramificação de um projeto. Neste post (em inglês), o autor sugere uma forma muito eficaz de como usar o git, conhecido como git flow.

 

Este post mostra onde hospedar o código fonte com as características de cada um. Também existe a possibilidade de hospedar todo o código internamente no servidor da própria empresa. Algumas soluções free são Gitolite, Gitorious e Gitblit. Já pago existe o Stash que oferece o Source Tree como ferramenta gráfica para facilitar o trabalho do dia a dia. Para quem vem do SVN, existe o Git tortoise que é gratuito.

 

E você, usa ou já usou algum sistema de controle distribuído? O que achou? E o leitor que nunca usou, qual o motivo?

 

Referências:

 

http://git-scm.com/book/pt-br

https://code.google.com/p/tortoisegit/

 Imagem: http://www.appfusions.com/

Outros artigos da série

<< Controle de versões Parte II - CVS/SVNTutorial git >>
Este post faz da série Controle de versões. Leia também os outros posts da série:

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Marcelo Jo
Engenheiro eletrônico com 10 anos de experiência em sistemas embarcados, pós graduado em redes de computadores e atualmente cursando mestrado em sistemas de visão por computador na universidade Laval no Canadá. Compartilha seu conhecimento neste portal quando tem tempo livre e quando não está curtindo a vida com sua mulher e os 3 filhos.

1
Deixe um comentário

avatar
 
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
0 Comment authors
Tutorial git - Embarcados - Sua fonte de informações sobre Sistemas Embarcados Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
trackback

[…] post anterior [1] foi abordado de maneira superficial o funcionamento básico do git. Vamos dar continuidade e […]