Sistemas de Controle de Versão: Centralizados e Distribuídos

Existem vários tipos de Sistemas de Controle de Versão. Além do local, que é o tipo mais comum, ao mesmo tempo que é menos seguro e consequentemente menos utilizado, os desenvolvedores que optam por esse tipo de organização geralmente utilizam outros dois tipos: centralizado e distribuído.

Nesta postagem, vamos conhecer um pouco mais sobre esses tipos.

SCVs Centralizados

O tipo centralizado surgiu quando os desenvolvedores começaram a lidar com o problema de trabalhar em conjunto. Nos SCVs locais, era impossível trabalhar dessa forma, já que todas as versões do projeto ficavam em um computador não compartilhado. 

Num SCV centralizado, o projeto fica guardado em um servidor que pode ser acessado de qualquer sistema operacional, facilitando assim o uso para cada desenvolvedor. 


Figura 1. Sistema de Controle de Versão Centralizado

Esse sistema possui algumas vantagens sobre o tipo local, por exemplo:
  • Todos os desenvolvedores podem ter uma noção do que cada um está fazendo;
  • É muito mais fácil lidar com SCVs Centralizados do que com bancos de dados locais para cada cliente;
  • Administradores têm uma noção completa de como anda o projeto, além de controle específico sobre quem faz o quê.
Contudo, ele também possui desvantagens:
  • Um SCV Centralizado possui apenas um servidor, ou seja, se este servidor cair, os desenvolvedores ficam impossibilitados de produzir;
  • Ainda sobre o fato de haver apenas um servidor, se o banco de dados sofrer algum dano e não houver nenhum backup, todo o projeto é perdido;

SCVs Distribuídos

Para solucionar esses problemas que os SCVs Centralizados não conseguiram resolver, surgiram os SCVs Distribuídos. Neste tipo, não só o arquivo que aquele desenvolvedor está usando é copiado para seu servidor, mas todo o repositório. Assim, caso haja uma perda, basta copiar o repositório do servidor de algum usuário para o servidor central e continuar o projeto.


Figura 2. Sistema de Controle de Versão Distribuído
Esse tipo de sistema garante um desenvolvimento mais rápido, já que todo o repositório está com cada usuário, tirando dele a necessidade de buscar arquivos específicos no servidor central. Ao mesmo tempo, é necessária uma maior atenção ao reunir os repositórios, visto que as mudanças realizadas por cada desenvolvedor pode trazer erros no projeto.

Abaixo, uma tabela listando as principais vantagens e desvantagens de cada tipo de sistema:


Assim, é possível analisar cada tipo de sistema e decidir qual é o melhor a ser utilizado em seus projetos.

Comentários

Postagens mais visitadas