Controle de versão distribuído

February 29th, 2008 § 8 comments

Há algum tempo atrás, eu falei aqui sobre a necessidade de escolher um controle de versão distribuído. Naquela época eu fiquei entre o Mercurial e o Bazaar por terem uma evolução rápida, poucos problemas e um suporte interessante da comunidade. Outros como o Git eu não cheguei a olhar muito por causa de certas limitações aparentes.

No final das contas, fiquei com o Mercurial porque algumas poucas características do mesmo me pareciam mais agradáveis do que dos demais. A idéia era migrar eventualmente os repositórios Subversion e ficar somente para o Mercurial. O que acabou não acontecendo e, ironia das ironias, o Git, que anteriormente descartara por falta de suporte Windows acabou se tornando a minha opção atual.

Antes que alguém pergunte, não, eu não comprei todo o hype que a comunidade Rails está vendendo sobre o Git. Aliás, toda a vez que a comunidade Rails começa a gritar que algo é interessante, eu já fico com o pé atrás. Ultimamente, parece que isso é receita segura para um evento Zed Shaw.

O que me levou ao Git foi mais simples e mais prosaico. Ironicamente, a despeito do suporte quase inexistente para o Windows (que depende realmente de ferramentas extras), ele suporta melhor o Windows do que o Mercurial. Não, isso também não é uma contradição.

O Mercurial, através do Python, realmente suporta o Windows nativamente. Mas entre rodar e executar operações comuns, há uma grande diferença. Mas configurá-lo para suporte a SSH já é uma coisa que, mesmo com o TortoiseHg depende de algumas operações que, embora eu possa executar com tranqüilidade, não valem para o tipo de esfera de trabalho de alguns projetos meus. Aí entra o Git, que com seu suporte mais do que excelente a Subversion, acabou se tornando uma ponte entre várias empresas e várias formas de trabalho.

Mercurial e Bazaar, embora tenha suporte a conversões para o Subversion, não tem nada com a praticidade do que o Git faz. O resultado é que eu não tenho problemas de configuração, posso usar um controle distribuído dentro da empresa, e tenho pontes fáceis com outros repositórios.

E sim, os zilhões de arquivos que o Git instala são uma porcaria e as ferramentas visuais são um lixo. Mas parece que isso também está sendo resolvido de rapidamente. Ainda temos repositórios Subversion e Mercurial de projetos anteriores que estão sendo migrados na base da necessidade, mas a vida está mais simples.

§ 8 Responses to Controle de versão distribuído"

  • Bem Ronaldo, eu estou com um pequeno dilema com relação a controles de versões, eu uso somente Source Safe na empresa e nunca usei outro, no entanto estou precisando de um cara desses, pois estou começando um novo projeto com uma equipe razoável, precisaria de um controle de versão Web , totalmente online, você teria algo a me indicar ou qual seria a melhor alternativa a ser utilizada.

    Abraços

  • “Aliás, toda a vez que a comunidade Rails começa a gritar que algo é interessante, eu já fico com o pé atrás. Ultimamente, parece que isso é receita segura para um evento Zed Shaw.”

    Muito bom. Acho que um bom exemplo é todo mundo falando sobre o Thin, mas arrisco dizer que existe alternativas bem interessantes como o Ebb: http://ebb.rubyforge.org/

    Quanto ao GIT eu acho que atualmente o grande trunfo dele é realmente a facilidade de integração com subversion.

  • Ronaldo says:

    Opa, Aguinelo, existem três situações possíveis:

    1) Você precisa manter o Source Safe e mover para algo mais distribuído. Nesse caso, você pode adotar algo como o Team Server e partir daí. Não é tão flexível mas o conhecimento não é perdido.

    2) Você pode mudar e precisa crescer aos poucos. Nesse caso, eu recomendo mover para um Subversion. Por mais que se fale mal, ainda é flexível e configurável o suficiente para atender a maioria das pessoas.

    2) Você pode radicalizar. Aí você poderia adotar um Mercurial, Bazaar ou Git da vida. Mas o problema é que configurar isso no Windows tem várias desvantagens para o pessoal que só está acostumado com Microsoft.

    O meio termo seria provavelmente mais fácil mas, até onde eu sei, o Subversion não tem integração com o VS.

  • Ronaldo says:

    João, pois é. O povo parou de pesquisar e escolher as melhores ferramentas. De repente, alguém grita que isso é o modo X de fazer e todo mundo sai correndo loucamente atrás do cara. Se ele está indo para o precipício, ninguém sabe.

    Vamos ver o que acontece. O Git é tão maior que a comunidade Ruby/Rails que eu nesse caso eu não estou preocupado. Ironicamente, muito do que o Linus critica no CVS poderia ser aplicado ao modo que certos defensores de frameworks operam hoje. :-)

  • Ronaldo, na verdade não pretendo usar com VS, o SS eu uso somente na empresa, é mais para gerenciar meus demnais projetos em PHP e Rails, porem eu trabalho em muitas maquinas diferentes, por isso que ria algo online onde eu pudesse baixar a ultima versão… trabalhar e subir as atualizações novamente…

    Obrigado

  • Ronaldo says:

    Ah, sim. Bem, nesse caso você provavelmente poderia ir direto para um distribuído porque mesmo não sendo tão interessante para projetos pessoais e menores, é bom saber para quando você tiver oportunidade de usar em projetos maiores.

  • Cara, vc poderia detalhar a questão do suporte a ssh? uso mercurial e não entendi (mas tb não o uso via ssh :D)

  • Ronaldo says:

    Para quem já está acostumado com SSH não é muito problema. Mas para alguém que está entrando como estagiário ou que é muito acostumado com Windows, a situação complica.

    Eu estava olhando a versão nova do TortoiseHg e ela já deu uma melhorada porque agora está incorporando todos os executáveis e configurações necessárias para acesso SSH sob Windows. Mas para funcionar 100%, já que não há suporte a autenticação SSH indireta via senhas (ou seja, se o TortoiseHg tem que pedir senha, ele fica esperando para sempre sem exibir nada), você tem que partir para uma configuração de um agente, criar contas via SSH, exigir uma passphrase.

    Com o git, dá para usar o gitosis que torna isso mais fácil, não exige conta SSH e funciona bem. Sem contar que se a integração é via SVN, o TortoiseSVN é bem mais refinado.

Leave a Reply

Your email address will not be published. Required fields are marked *

What's this?

You are currently reading Controle de versão distribuído at Superfície Reflexiva.

meta