quarta-feira, 21 de janeiro de 2015

Git ou Mercurial? parte 1

Conhecemos os dois tipos de controles de versão: o centralizado e o Distribuído e levando em consideração isso devemos analisar a partir de alguns critérios qual seria a melhor ferramenta para as equipes que decidiram migrar para o distribuído ou mesmo permanecer com o centralizado.

Para quem vai ficar no controle de versão centralizado, é bem simples decidir já é o Subversion é um padrão estabelecido, acima de outros tais como CVS, Visual Source Safe, ClearCase etc.
Já para os que optaram por escolher uma ferramenta de controle de versão distribuído, a escolha é um desafio.

Para diminuir o número inicial de ferramentas a se considerar, vamos usar alguns critérios de filtragem inicial:

Open source.

As melhores são open source então não há a menor necessidade de usar uma ferramenta proprietária para controle de versão.

Multiplataforma (Windows, Linux, etc.).


A mesma ferramenta deve permitir o uso de qualquer plataforma de interesse da a equipe para trabalhar. Se houver interface gráfica (tipo o Tortoise) ou plugin para IDEs é ainda melhor, mesmo que a linha de comando seja muito mais rápida e produtiva para a maioria das operações do controle de versão.

Massa crítica de projetos já usando.


Projetos grandes usando uma ferramenta são boas referências, sinaliza que ela já foi testada, avaliada e aceita por outros antes. Com mais projetos fica mais provável que haverá uma comunidade ativa mantendo e desenvolvendo a ferramenta por mais tempo.

Após usar esses critérios acima, nos restam praticamente o Git e o Mercurial. O Bazaar poderia entrar na lista, mas para facilitar a comparação não o incluímos(com resultados piores que os outros 2 e não tão popularizado). Muitos outros como Darcs, Monotone e SVK não passam no critério 3.
A seguir, alguns projetos conhecidos que usam o Mercurial ou o Git:

Mercurial:
[2]
e mais: Google Code, Python, OpenSolaris etc.

Git: 
  • [2]
e mais, Perl, Samba, Qt, Btrfs da Oracle etc.

Aspectos Sociais na Escolha do DVCS

"Critérios de desempate podem ser desempenho, funcionalidades, facilidade de uso, portabilidade, interfaces etc. O problema é que as análises comparativas entre o Mercurial e o Git têm mostrado muito mais semelhanças que diferenças entre os dois. Embora um ou outro tenha uma pequena vantagem em algum dos aspectos, não há diferença realmente significativa que justifique uma decisão baseado nisso.
Novos processos tem se apoiado em outros fatores de desempate, suporte à plataforma Windows, preferência dos desenvolvedores envolvidos e menor curva de aprendizado da ferramenta."[1]
2 exemplos de escolhas fundadas no aspecto social:
O Google Code fez uma análise comparativa entre o Mercurial e o Git considerando as duas alternativas bastante equilibradas e escolheram o Mercurial seu conjunto de comandos ser mais próximos do Subversion, o que facilita a transição dos desenvolvedores, e pelo serviço que o Google Code já oferece ter tido melhor desempenho e adequação com o Mercurial do que o Git.

O processo que levou o Python a também adotar o Mercurial (PEP 374 – Chosing a distributed VCS for the Python project) comparou Mercurial, Bazaar e Git e apresentou comparações de desempenho obtido, alguns casos de uso, mas as características que favoreceram o Mercurial foram: seu melhor suporte ao Windows, a preferência da comunidade de desenvolvedores pelo Mercurial e, o fato de o Mercurial ser escrito em Python , que facilitou a assimilação da ferramenta.

Fontes 

1- Blog Pronus - Qual a melhor ferramenta de controle de versão: Subversion, Git ou Mercurial. Comparação entre Git e Mercurial principalmente considerando fatores socias para a escolha.
2 - Gerenciadores de Controle de Versão: Git, Mercurial e Bazaar. Boa apresentação em slides comparando as 3 ferramentas exibindo dados e tabelas interessantes. 

Links relacionados

Comparação entre Git e Mercurial. Quadro comparativo entre principais características entre os dois. Alguns comentários interessantes também sobre portabilidade e interfaces disponíveis.
Why Git is better than X? Artigo interessante que analisa diversos pontos de Git com boas ilustrações de conceitos.
Os 6 melhores controle versões OpenSource. Bom comparativo entre sistemas de controle de versão.
PEP 374 – Chosing a distributed VCS for the Python project.Google Code - análise comparativa Mercurial e Git.

Nenhum comentário:

Postar um comentário