O que é Controle de Versão?

Mas o que é controle de versão? Para explicarmos este conceito utilizaremos das definições de um dos mais famosos sistema de controle de versão, que se chama Git. O Git é um sistema de controle de versão de documentos e código fonte inicialmente desenvolvido para o núcleo do sistema operacional Linux e que acabou sendo utilizado por muitos outros projetos. O Git é um sistema distribuído e, por isso, não depende de um servidor central para estar funcionando. Nele, é possível ter acesso ao histórico de todo um diretório, bem como o controle de versão dos arquivos lá contidos. Isso é tudo que precisamos saber sobre o Git hoje. Vamos ao que é essa "onda" de controle de versão.




Git logo
Logo do Git

Podemos classificar os sistemas de controle de versão em três tipos:

    I    - Sistemas de Controle de Versão Locais;
    II  - Sistemas de Controle de Versão Centralizados;
    III - Sistemas de Controle de Verão Distribuídos.

Vamos a cada um deles!

Sistema de Controle de Versão Local

Talvez seja um dos mais comuns e o cara que vai fazer a gente entender os sistemas de controle de versão. O controle de versão local, é quando se faz o controle de arquivos que precisam passar por diversas alterações em um ou mais diretórios: renomeando, classificando por datas, organizando em pastas e/ou subpastas. Aí a pessoa pode pensar "Ah! então é isso mesmo que eu faço nos meus projetos e o que estou fazendo é o controle de versão." a resposta é que sim, não é a forma mais recomendada por ser muito suscetível a erros, principalmente se você não for muito organizado.
Se hoje em dia isso ainda é comum, imagina nos primórdios... Mas também existem sistemas para organizar e efetuar o controle de versões de um arquivo na própria máquina. Esses sistemas de controle de versão local ou VCS (Version Control System), foram desenvolvidos justamente para sanar o problema dos desorganizados e dar uma força aos organizados. Um dos mais populares é o sistema chamado RCS que é um sistema que ainda é muito utilizado e faz parte de pacotes de desenvolvimento disponibilizados pelo Mac OS X que habilita este comando quando é instalado. O comando rcs é responsável por criar patches com a diferença dos arquivos, permitindo a recriação do mesmo quando se junta todos os patches.

Diagrama do Controle de Versionamento Local

Sistema de Controle de Versão Centralizado

Depois de superado o problema dos desorganizados localmente, podemos imaginar que existe também a necessidade de controlar arquivos que sabemos que mais de uma pessoa deve ter acesso e ajudar na sua construção. Como fazer isso? Basta centralizar em um local! E isso implica também em ser organizado, já que é mais de uma pessoa tentando organizar um arquivo no mesmo local. Então... Os sistemas de controle de versão centralizados ou CVCS (Centralized Version Control System) são os sistemas que permitem o acesso ao histórico e versões de um arquivo que está sendo trabalhado em colaboração. Não é difícil de imaginar. Nesses sistemas existe um servidor que contém todos os arquivos e versões de forma centralizada e os envolvidos podem fazer downloads e uploads das alterações e o servidor faz todo o controle.


Diagrama do Controle de Versionamento Centralizado

Sistema de Controle de Versão Distribuídos

Ainda assim, mesmo depois do sistema de controle de versionamento centralizado, alguns outros problemas foram logo percebidos. É tudo centralizado não, é? É! Todos tem acesso, não tem? Tem! Então, qual o problema?! A centralização! É, dizer que a centralização é um problema é um pouco de exagero de nossa parte, até por que pode sim existir servidores muito bem planejados e implementados a ponte da chance de der problema na máquina seja mínima, maaaaas... Pode acontecer, não pode? Pode! Para resolver essa problemática onde pode ser que os servidores centralizados tenha um disco danificado ou qualquer outro problema onde pode vim a impossibilitar o acesso e a integridade dos arquivos, vieram os sistemas de controle de versão distribuídos ou DVCS (Distributed Version Control System). Nesses, são envolvidos muito mais que um servidor e existe a sincronização entre eles para que haja a garantia de que se um der problema, os arquivos estão a salvo e íntegros sempre. Para o usuário, nada muda, é como se fosse um único servidor ou serviço, principal característica dos sistemas distribuídos.

 
Diagrama do Controle de Versão Distribuído











Entenderam? :)


Fonte: https://git-scm.com/book/pt-br/v1/Primeiros-passos-Sobre-Controle-de-Vers%C3%A3o


Um comentário:

  1. Olá Alef Vinicius,

    Para complementar sua publicação eu venho trazer o link do Git fornecido pelo Departamento de Computação da Universidade Federal de Sergipe.

    link:https://git.dcomp.ufs.br

    ResponderExcluir