Proporcionalmente inverso aos sistemas de controle de versões centralizados, os VCS distribuídos, também chamado de DVCS* tem uma arquitetura muito mais complexa e até um tanto quanto complicada para compreensão de iniciantes, em contra partida nos apresenta uma série de vantagens que não são possíveis de aplicar ao modelo centralizado.
Dando vista ao processo no âmbito operacional, um DVCS não é muito desigual a um VCS centralizado, pois os desenvolvedores de um determinado projeto também fazem commit de suas alterações durante o desenvolvimento dos arquivos, da mesma forma quem geram tarballs, patches, atualizam seus arquivos ou analisam seu histórico de alteração.
A grande sacada do modelo distribuído está no fato de não haver um único repositório centralizado, mas sim diversos repositórios espalhados na rede e um repositório para cada desenvolvedor, sob a dependência da ferramenta que está sendo utilizada pelo projeto. Desta maneira, por exemplo, pode-se fazer com que os repositórios "filhos" de um mesmo repositório "pai" compartilhem suas alterações paralelamente entre si.
Em um sistema de controle distribuído, uma conexão permanente com o servidor não é um requisito essencial para o funcionamento do sistema, visto que cada desenvolvedor é responsável por manter seu próprio repositório, dessa forma todas as alterações feitas no longo do desenvolvimento podem passar por um commit local e então somente quando necessário ou solicitado, devem atingir o repositório "pai", ou paralelos a ele, caso exista algum. Incrementado a esse contexto, o "pai" destes repositórios "filhos" podem realizar um commit destas mudanças, no seu repositório “pai, tornando com que suas modificações se tornem públicas para os demais membros do conjunto de repositórios.
![Linux: GIT: Controle de Versões Distribuído para Projetos de Software](//img.vivaolinux.com.br/imagens/artigos/comunidade/img3.PNG)
Figura 3: modelo de controle de versão distribuído
Organizar e acessar os repositórios desta maneira torna os DCVS totalmente aplicáveis para equipes de trabalho que estão geograficamente espalhados pelo mundo, ao qual nem sempre possuem uma conexão estável entre os colaboradores do projeto. Porém isso não quer dizer que uma conexão de rede, ou ao menos uma forma de disseminar estas mudanças não seja importante para o funcionamento de DCVS, acontece que quando um desenvolvedor utiliza um sistema de controle distribuído ele pode ter acesso às informações do repositório "pai", mesmo que não exista uma conexão com o mesmo. No entanto estas informações dizem respeito à última sincronização do repositório local, com o repositório paralelo ou o repositório "pai". Além do mais, o fato de ser distribuído não impede necessariamente que o repositório "filho" replique suas alterações para o repositório "pai", pois se isso não acontecesse, as suas modificações não seriam reproduzidas para os demais colaboradores do projeto.
Podemos citar como um exemplo semelhante de utilização e complexidade desse modelo, as trocas (downloads e uploads) de arquivos na plataforma p2p, onde se torna um pouco mais difícil o controle sobre o acesso aos dados existentes em um determinado repositório. A partir disso é que vem a procura e empregabilidade de algumas ferramentas que possuem funcionalidades específicas capazes de solucionar este tipo de problema.
________________________________________
* DVCS: acrônimo de Distributed Version Control Systems