sábado, 20 de fevereiro de 2016

Sistemas de Controle de Versionamento: Centralizados x Distribuídos

Já sabemos que o controle de versionamento permite, entre outras características, que várias pessoas trabalhem simultaneamente num mesmo projeto, onde cada pessoa trabalha localmente e decide quando disponibilizar as alterações efetuadas para os demais colaboradores no projeto.

Existem entretanto diferentes modelos de sistema de versionamento, neste post traremos então as principais caraterísticas e diferenças entre os dois modelos existentes: Centralizado e Distribuído. A tabela abaixo apresenta um mini comparativo com alguns desses sistemas:


SCV
CENTRALIZADOS
DISTRIBUÍDOS
ABERTOS
Subversion, CVS, OpenCVS.
GIT, Bazaar, Mercurial.
PROPRIETÁRIOS
ClearCase (IBM), SourceSafe (Microsoft), Serena.
BitKeeper, TeamWare.

Sistemas de controle de versão distribuídos são: mais modernos, rodam mais rápido, menos propensos a erros, têm mais funções e são um pouco mais complexos também, entretanto, as vezes essa complexidade extra faz com que muitos usuários optem por versões centralizadas.

A principal diferença entre os sistemas está no número de repositórios, enquanto que na centralizada há apenas um repositório central e, na distribuída há vários repositórios, como ilustrado nas figuras abaixo. No centralizado cada usuário tem sua própria working copy, após cada commit realizado por um usuário, outros terão acesso às mudanças através do comando update. No distribuído cada usuário além de uma working copy tem também seu próprio repositório.
Fonte: https://homes.cs.washington.edu/~mernst/advice/version-control.html

Fonte: https://homes.cs.washington.edu/~mernst/advice/version-control.html
Podem haver conflitos em ambos os sistemas, ocorrem quando há edições simultâneas num mesmo arquivo por usuários diferentes. Nos sistemas distribuídos há uma operação explícita chamada merge , que pode tentar mesclar as mudanças simultâneas automaticamente ou requisitar intervenção manual através do uso da merge tool. Nos sistemas centralizados é mais difícil resolver conflitos devido a falta dessa operação, o merge ocorre implicitamente toda vez que um update é requisitado.

Mais informações acerca de como evitar e gerenciar conflitos serão tratados numa próxima postagem, em breve, fiquem ligados!

O vídeo abaixo é uma defesa ao uso dos sistemas distribuídos, como Git e Mercurial, em detrimento dos centralizados, como o Subversion:








Referências:

Version control concepts and best practices. Disponível em:
https://homes.cs.washington.edu/~mernst/advice/version-control.html. Acesso em <17/02/2016>.

Link para o vídeo aqui publicado: https://www.youtube.com/watch?v=_yQlKEq-Ueg. Acesso em <20/02/2016>.

Nenhum comentário:

Postar um comentário