O Controle de Versão é um sistema que armazena todo o histórico no desenvolver de um projeto de
software seja alterações de código, inclusão, remoção etc.. Sua finalidade é gerenciar diferentes versões
de um documento que sofre alterações ao longo do
tempo durante o desenvolvimento de um projeto.
Versionamento centralizado
O versionamento centralizado é composto por um único servidor central e várias estações
de trabalho, com base no conceito de arquitetura cliente-servidor. Este sistema possui uma topologia na
forma de estrela, sendo um único repositório central para várias estações de trabalho.O mesmo mais
voltado para equipes pequenas.
Alguns exemplos de sistema como esse são: Subversion e CVS.
Vantagens
- Maior controle do projeto.
- Possibilidade de bloqueio de arquivos específicos.
- Imposição de segurança de acesso.
Desvantagens
- Baixa escalabilidade.
- Todas versões ficam em uma única maquina.
- Necessidade de conexão constate com o servidor.
Versionamento distribuído
No versionamento distribuído existem vários diretórios autônomos e independentes, para cada
programador (estação de trabalho). Ou seja cada estação de trabalho possui seu próprio repositório e as
alterações feitas no código são salvas localmente. Ao contrário do versionamento centralizado as
estações podem se comunicar entre si, mas é recomendado que se utilize um servidor responsável.
Git, mercurial e Bazaar são alguns exemplos desse tipo de sistema.
Vantagens
- Maior rapidez e autonomia.
- Replicação de repositórios.
Desvantagens
- Uma maior complexidade no fluxo de trabalho.
Essa arquitetura é recomendada para equipes com grande quantidade de desenvolvedores que estão
remotamente distantes.