Os serviços de versionamento de código

“ Neste artigo será apresentado uma introdução aos principais sistemas de gerenciamento e controle de versão centralizados e distribuídos e os principais sistemas usados hoje para versionamento.”

Você da área da tecnologia já participou de um projeto de desenvolvimento em grupo e você sabe como é difícil a constante troca de arquivos entre a equipe. E-mail, upload na nuvem, pen drive, são meios usados para trocar e compartilhar códigos. Trabalhar em um projeto de forma paralela usando Controle de versão, também chamado de Controle de revisão, é uma boa forma de contornar estes problemas.

O que é?

Um Sistema de Controle de Versão (VCS – Version Control System) é um sistema que registra mudanças feitas em um grupo de arquivos e tem como função principal gerenciar um projeto e gerar diferentes versões do mesmo. Ele oferece uma maneira mais simples e eficiente da equipe de desenvolvimento possa modificar o mesmo código base sem haver conflitos. Com ele ainda, é possível ver um histórico de todas as modificações feitas pela equipe, criar novas versões e recuperar versões antigas do projeto. Vale lembrar que o sistema de controle pode funcionar para qualquer arquivo em um computador mesmo seu foco sendo para desenvolvimento.

git1

Como funciona?

Os primeiros tipos desses sistemas a surgirem foram os sistemas de controle de versão centralizados e funcionam da seguinte forma: possuem um único servidor, baseados na arquitetura cliente-servidor, onde o servidor por sua vez, também chamado de repositório contém todos os arquivos do projeto. Assim, os desenvolvedores, devem fazer um download (checkout) da versão que queiram modificar para sua área de trabalho local ao terminarem podem realizar um upload para o servidor. Com este sistema ficou fácil de administrar o projeto, pois a equipe sabe o que cada um está modificando e mantém um histórico das versões do projeto.

git2

Entretanto, neste sistema só existe um ramo de desenvolvimento, não há possibilidade de diferentes equipes trabalharem em paralelo no mesmo projeto em ramificações distintas. Outra desvantagem é que como a estrutura deste sistema só existe um servidor, se este ficar fora do ar, não será possível durante o tempo de inatividade trabalhar em grupo.

E então que surgem os sistemas de controle de versão distribuídos (Distributed Version Control System ou DVCS), nesse sistema os clientes não mais fazem cópia das últimas versões, mas fazem um pull do repositório inteiro. Então o cliente trabalha nas modificações do projeto localmente, realizando mudanças, commit, e quando desejar levar as modificações para o servidor realiza um upload, push.

git3

Qual a melhor ferramenta para usar?

Agora que já sabemos como esses sistemas funcionam vamos listar os principais softwares que são responsáveis em fazer esse sistema funcionar. Existem hoje muitos sistemas e ferramentas para controle de versão, cada um usando um método diferente. Para listar os melhores programas iremos filtrar a lista em três aspectos principais: open-source, multiplataforma e popularidade. Portanto, os programas listados são softwares livres, funcionar na maioria dos sistemas operacionais e são populares entre os desenvolvedores.

Os principais sistemas gráficos para versionamento de arquivos e códigos é o Tortoise em duas versões distintas, usando o sistema CVS e SVN.

TortoiseCVS (Sistema CVS)

O TortoiseCVS é um front-end gráfico que torna o uso do CVS mais fácil e intuitivo para Microsoft Windows, Mac e Linux. Basicamente, o TortoiseCVS realiza as principais operações do sistema CVS por meio de menus de contexto integrados ao Windows Explorer. O TortoiseCVS é, em virtude da sua proposta, uma ferramenta extremamente eficiente cuja principal característica é a sua independência de uma aplicação cliente específica. Dessa forma, como descrito anteriormente, todas as operações serão realizadas por meio de menus de contexto do Windows Explorer facilitando o aprendizado.

git4

TortoiseSVN (Sistema SVN)

TortoiseSVN é um cliente do Subversion (SVN) para Microsoft Windows, Mac e Linux. Ele ajuda a gerenciar diferentes versões de código-fonte de seus projetos. Usa o sistema SVN, semelhante com o CVS, usado pela Google Code atualmente e o sistema que possui hoje a maior adoção entre as empresas.

git5

E para os sistemas de controle de versão e backup de projetos existem o Git, ferramenta popular na internet por proporcionar alto desempenho em suas tarefas, e o Mercurial muito usado em ambientes corporativos.

Git

O git é a ferramenta de controle de versão mais conhecido atualmente. Inicialmente desenvolvido por Linus Torvalds, criador do Unix, tem ênfase na sua velocidade e desempenho. Cada diretório de trabalho do git é um diretório, possuindo histórico de modificação e acompanhamento das revisões. Além disso, não é necessário a conectividade com um servidor ou a uma rede, o git pode rodar localmente. Usado no desenvolvimento de vários produtos corporativos como: Linux kernel, Perl, Samba, X.org Server, Qt, Ruby on Rails, GNOME, Google Android, Btrfs da Oracle conta ainda com várias GUIs para download.

git6

Mercurial

O Mercurial é uma ferramenta multiplataforma de controle de versão distribuído para desenvolvedores de software. O sistema é implementado principalmente em Python, porém o utilitário binário diff foi escrito em C. Mercurial foi inicialmente escrito para rodar sobre Linux, mas foi portado para Windows, Mac OS X, e a maioria dos outros sistemas UNIX. Mercurial é principalmente um programa de linha de comando. Usado no desenvolvimento de vários produtos corporativos como: Google Code, Python, Java (OpenJDK), Mozilla, Netbeans (IDE), OpenSolaris.

git7

Outros sistemas como Bazaar, Monotone, SVK e LibreSource também são usados e merecem destaque.

Os serviços de versionamento de código

Aluno do 5º ano do curso de Engenharia da Computação da Universidade Positivo e estagiário do Núcleo de Computação Embarcada.

Classificado como:                                        

Deixe uma resposta

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