Está na hora de migrar para o controle de versão distribuído?
Continuando a série de artigos sobre controle de versão distribuído (Distributed Version Control Systems – DVCS) que começou com a atualização dos conceitos básicos sobre controle de versão e depois para o artigo sobre vantagens e desvantagens do controle de versão distribuído, esse artigo agora analisa a viabilidade ou não da mudança do controle de versão centralizado para o distribuído.
Antes de mais nada, é importante relembrar que controle de versão de software é uma técnica comprovada de engenharia de software. Independente da escolha entre o modelo centralizado ou distribuído, é fundamental que algum controle de versão seja usado.
Para ajudar na escolha, siga o fluxograma a seguir:

- Já usa algum controle de versão? Se ainda não, a decisão é simples: melhor já começar com o controle de versão distribuído de uma vez, com uma boa capacitação da equipe e do processo para que tudo corra bem.
- Planejar | Executar adoção | migração para DVCS. Pavimentar o caminho para uma transição suave e bem-sucedida. Cronogramas, projeto-piloto, migração, capacitação da equipe, elaboração do processo de desenvolvimento, suporte técnico, acompanhamento, avaliações etc..
- Funciona bem? Não há motivo para trocar uma solução que já funciona por outra. Como diz o ditado, em time que está ganhando, não se mexe. Ainda mais em um projeto em andamento, trocar de modelo de controle de versão só adicionaria riscos desnecessários.
- Experimentar DVCS? O controle de versão distribuído traz alguns benefícios interessantes e mesmo a estrutura atual funcionando bem, talvez seja possível melhorar ainda mais. A experimentação de uma nova tecnologia geralmente segue um arranjo comum: projeto-piloto simples, escopo bem definido e equipe formada por pessoas pré-dispostas a novas experimentações.
- Falta capacitação? Alguma coisa está errada na solução atual. Antes de trocar seis por meia dúzia, é melhor analisar qual a causa: se é por falta de capacitação da equipe, inexistência de um processo bem definido ou se realmente o projeto se encaixa mais no perfil do DVCS.
- Migração para DVCS é viável? A subutilização do controle de versão é muito mais comum do que deveria. O sintoma clássico é o uso burocrático do controle de versão basicamente como ferramenta de backup, como já comentado num post anterior. Se é necessário investir em capacitação, talvez valha a pena que essa capacitação já seja feita em uma ferramenta mais moderna. Talvez não. Talvez apenas acertar a solução atual resolva.
- Consultoria | Treinamento em Controle de Versão Centralizado. Capacita a equipe e define o processo necessário para usar a solução atual, aproveitando tudo que o controle de versão tem para contribuir.
Considerações Finais
A mudança do controle de versão centralizado pelo distribuído é mais que uma questão apenas de troca de ferramenta. Implica ajustes no processo e também capacitação da equipe de desenvolvimento.
Controle de versão distribuído traz vantagens sim, mas não torna o controle de versão centralizado obsoleto. A decisão de passar de um tipo para outro deve ser analisada com cuidado. De preferência com experimentações para gerar algum tipo de opinião própria e depois com muito planejamento para que não haja surpresas.
A tabela a seguir apresenta sugestões de mudança de acordo com o perfil do uso de controle de versão:
| Uso atual do controle de versão | Vale a pena mudar para o Distribuído? | Comentários |
|---|---|---|
| Não usa | Subutiliza | Sim | Invista na mais nova geração de controle de versão de uma vez! A definição e um processo e capacitação da equipe ajudarão na melhoria da qualidade do software. |
| Insatisfatório pois se encaixa no perfil DVCS | Talvez | Depende de alguns fatores. Entre eles de quanto os problemas atrapalham o andamento do projeto. |
| Satisfatória | Não | Projetos atuais não devem migrar. Mas experimentações são bem-vindas em projetos-piloto. |

Outro fator a se considerar na migração seria o uso de um sistema de controle de mudanças, como o Trac. Não sei se seria possível usar um DVCS como o Git ou o Mercurial com o Trac.
Alberto,
Já existe plugins do Trac para o Mercurial e o Git:
[...] para o artigo sobre vantagens e desvantagens do controle de versão distribuído, esse artigo agora analisa a viabilidade ou não da mudança do controle de versão centralizado para o distribuído.” [Enviado por André Felipe Dias (andref·diasΘpronus·eng·br) - [...]
[...] sobre o centralizado, embora seja um pouco mais complexo. Para as equipes que decidiram migrar para o distribuído ou mesmo permanecer com o centralizado, ainda resta a questão de qual a melhor ferramenta [...]
I have been looking looking around for this kind of information. Will you post some more in future? I’ll be grateful if you will.