sexta-feira, 15 de agosto de 2014

CONTROLE DE VERSÕES


O QUE É CONTROLE DE VERSÃO

 Com o gradual crescimento de projetos de média e alta complexidade é muito comum que vários programadores que estejam em lugares distintos manipulem os mesmos arquivos. O controle de versão gerencia estes projetos através de históricos nos quais registra-se toda a evolução do projeto, todas alterações sobre cada um dos arquivos, permitindo saber o que, quando e onde foi feita uma determinada alteração, proporciona o trabalho conjunto entre vários programadores evitando que um sobrescreva o código do outro. Também mantém linhas diferentes de evolução do mesmo projeto. Por exemplo, mantendo uma versão 1.0 enquanto a equipe prepara uma versão 2.0


COMO FUNCIONA?

O controle de versão é composto de duas partes(Figura 1): o repositório e a área de trabalho. O repositório armazena todo o histórico de evolução do projeto, registrando toda e qualquer alteração feita em cada item versionado.
O desenvolvedor não trabalha diretamente nos arquivos do repositório. Ao invés disso, usa uma cópia de trabalho que seria o clone dos arquivos do projeto e que é monitorada para identificar as mudanças realizadas. Essa área é individual é isolada das demais áreas de trabalho.
Figura 1. Controle de versão.

- O repositória seria como um servidor central, onde os dados do projeto são armazenados.
- As estações seriam onde os programadores estão trabalhando no desenvolvimento do sistema.


INTRODUÇÃO AO GIT
O GIT é um controle de versão distribuído que foi desenvolvido pelo Linus Torvalds para ajudar no desenvolvimento do kernel do Linux. O desenvolvimento do GIT começou em 3 de Abril de 2005. A primeira mescla de arquivos (Merge) de múltiplos “ramos” (Branches) foi realizada em 18 de Abril. Torvalds alcançou seus objetivos de performance em 29 de Abril, o recém-nascido Git se tornou referência ao registrar patches para o Linux com altas taxas em performance. No dia 16 de Junho, a entrega do kernel 2.6.12 foi gerenciada pelo GIT. 
Mesmo que fortemente influenciado pelo antigo controle de versão BitKeeper, Torvalds deliberadamente tentou evitar abordagens tradicionais, levando a um design único. Ele desenvolveu o sistema de controle de versão GIT até que fosse possível sua utilização por usuários técnicos, entregando então a manutenção do software para Junio Hamano, um dos principais colaboradores do projeto. Hamano foi responsável pela entrega da versão 1.0 em 21 de dezembro de 2005, e continua como responsável pela manutenção do GIT.

VANTAGENS DO GIT

A maioria das controles de versão trabalham de forma centralizada(figura 2), isso quer dizer que as versões alteradas dentro de um sistema vão ser guardadas somente no repositório, e na estação fica apenas uma versão.
Figura 2. Sistema de versão centralizada.

O Git é é um sistema distribuído(Figura 3), ou seja, cada desenvolvedor possui no seu ambiente de desenvolvimento um repositório com todos os históricos e habilidade total de controle das revisões, não dependente de acesso a uma rede ou repositório central, o fato de quase todas as operações serem feitas localmente gera uma vantagem enorme em  ganho de velocidade em relação à sistemas centralizados.
Ramificação(branching) e mesclagem(merging), essas talvez sejam umas das características mais interessantes do Git. Criar um branch significa dizer que você vai divergir da linha principal de desenvolvimento e continuar a trabalhar sem bagunçar essa linha principal. Em muitas ferramentas de controle de versão, este é um processo um pouco caro, muitas vezes exigindo que você crie uma nova cópia do seu diretório de código-fonte, o que pode levar um longo tempo para grandes projetos. Algumas pessoas se referem ao modelo de ramificação em Git como sua característica mais forte.  A forma como o Git cria branches é inacreditavelmente leve, fazendo com que as operações com branches sejam praticamente instantâneas e a alternância entre os branches seja tão rápida quanto. Ao contrário de muitos outros sistemas de controle, o Git incentiva um fluxo de trabalho no qual se fazem branches e merges com frequência, até mesmo várias vezes ao dia. Compreender e dominar esta característica lhe dará uma ferramenta poderosa e única e poderá literalmente mudar a maneira de como você desenvolve.
Figura 3. Sistema de versão distribuído.

Outra vantagem interessante seria a forma com que ele trabalha cada projeto, que são divididos em três estágios(Figura 4):

- Working Directory:  Seria o diretório onde desenvolvedor está trabalhando no projeto. Ele é criado quando se copia do repositório a base do sistema para ser trabalhado na estação.

- Staging Area:  Após o comando de “git add”, todos arquivos que estavam sendo editados passam para um estágio intermediário, seria uma sala de espera onde os arquivos já modificados ficam antes de retornarem ao repositório.

- Git Directory:  Após o comando “git commit” estes arquivos vão para o repositório final que é a base de onde foi retirada. Estes estágios dão ao Git uma flexibilidade e uma confiabilidade maior em relação aos demais sistemas de controle, tornando o trabalho mais simples.

Figura 4. Três estágios do Git.

Nenhum comentário:

Postar um comentário